[{"data":1,"prerenderedAt":1114},["ShallowReactive",2],{"guide-url-encoding-vs-base64":3},{"id":4,"title":5,"body":6,"date":1106,"description":1107,"extension":1108,"meta":1109,"navigation":575,"path":1110,"readingTime":585,"seo":1111,"stem":1112,"__hash__":1113},"guides\u002Fguides\u002Furl-encoding-vs-base64.md","URL Encoding vs Base64: When to Use Each",{"type":7,"value":8,"toc":1084},"minimark",[9,14,18,40,43,47,52,59,69,101,105,108,114,139,143,281,285,288,314,388,391,395,398,427,471,474,478,485,489,504,515,675,679,682,748,751,755,758,850,853,871,875,879,890,972,976,1002,1006,1038,1042,1063,1067,1080],[10,11,13],"h2",{"id":12},"the-core-difference","The Core Difference",[15,16,17],"p",{},"URL encoding and Base64 solve fundamentally different problems:",[19,20,21,34],"ul",{},[22,23,24,28,29,33],"li",{},[25,26,27],"strong",{},"URL encoding"," makes text safe for URLs by replacing special characters with ",[30,31,32],"code",{},"%XX"," sequences",[22,35,36,39],{},[25,37,38],{},"Base64"," converts binary data into ASCII text for transport through text-only channels",[15,41,42],{},"They are not interchangeable. Using the wrong one breaks your application.",[10,44,46],{"id":45},"how-each-encoding-works","How Each Encoding Works",[48,49,51],"h3",{"id":50},"url-encoding-percent-encoding","URL Encoding (Percent-Encoding)",[15,53,54,55,58],{},"Replaces individual characters that are unsafe in URLs with a ",[30,56,57],{},"%"," plus two hex digits.",[60,61,66],"pre",{"className":62,"code":64,"language":65},[63],"language-text","\"hello world\" → \"hello%20world\"\n\"price=10\"    → \"price%3D10\"\n","text",[30,67,64],{"__ignoreMap":68},"",[19,70,71,77,86,92],{},[22,72,73,76],{},[25,74,75],{},"Input",": Text string",[22,78,79,82,83,85],{},[25,80,81],{},"Output",": ASCII string with ",[30,84,57],{}," escapes",[22,87,88,91],{},[25,89,90],{},"Size change",": Slightly larger (3 bytes per encoded字符character)",[22,93,94,97,98],{},[25,95,96],{},"Reversible",": Yes — decode with ",[30,99,100],{},"decodeURIComponent",[48,102,104],{"id":103},"base64-encoding","Base64 Encoding",[15,106,107],{},"Converts binary data into a string using 64 safe ASCII characters (A–Z, a–z, 0–9, +, \u002F).",[60,109,112],{"className":110,"code":111,"language":65},[63],"\"hello world\" → \"aGVsbG8gd29ybGQ=\"\n",[30,113,111],{"__ignoreMap":68},[19,115,116,121,126,131],{},[22,117,118,120],{},[25,119,75],{},": Binary data (any bytes)",[22,122,123,125],{},[25,124,81],{},": ASCII string using Base64 alphabet",[22,127,128,130],{},[25,129,90],{},": ~33% larger (3 bytes → 4 characters)",[22,132,133,97,135,138],{},[25,134,96],{},[30,136,137],{},"atob"," or equivalent",[10,140,142],{"id":141},"side-by-side-comparison","Side-by-Side Comparison",[144,145,146,161],"table",{},[147,148,149],"thead",{},[150,151,152,156,159],"tr",{},[153,154,155],"th",{},"Aspect",[153,157,158],{},"URL Encoding",[153,160,38],{},[162,163,164,178,191,204,218,231,244,268],"tbody",{},[150,165,166,172,175],{},[167,168,169],"td",{},[25,170,171],{},"Purpose",[167,173,174],{},"Make text URL-safe",[167,176,177],{},"Encode binary as text",[150,179,180,185,188],{},[167,181,182],{},[25,183,184],{},"Input type",[167,186,187],{},"Text (mostly)",[167,189,190],{},"Any binary data",[150,192,193,198,201],{},[167,194,195],{},[25,196,197],{},"What gets encoded",[167,199,200],{},"Only unsafe characters",[167,202,203],{},"Everything",[150,205,206,211,215],{},[167,207,208],{},[25,209,210],{},"Output format",[167,212,213,85],{},[30,214,32],{},[167,216,217],{},"A–Z, a–z, 0–9, +, \u002F, =",[150,219,220,225,228],{},[167,221,222],{},[25,223,224],{},"Size overhead",[167,226,227],{},"Up to 3× for special chars",[167,229,230],{},"Always ~33%",[150,232,233,238,241],{},[167,234,235],{},[25,236,237],{},"Handles binary",[167,239,240],{},"No",[167,242,243],{},"Yes",[150,245,246,251,254],{},[167,247,248],{},[25,249,250],{},"URL-safe output",[167,252,253],{},"Yes (by design)",[167,255,256,257,260,261,260,264,267],{},"No (contains ",[30,258,259],{},"+",", ",[30,262,263],{},"\u002F",[30,265,266],{},"=",")",[150,269,270,275,278],{},[167,271,272],{},[25,273,274],{},"Typical use",[167,276,277],{},"Query params, path segments",[167,279,280],{},"Email, Data URIs, JWT",[10,282,284],{"id":283},"when-to-use-url-encoding","When to Use URL Encoding",[15,286,287],{},"Choose URL encoding when:",[19,289,290,296,302,308],{},[22,291,292,295],{},[25,293,294],{},"Adding text to a URL"," — query parameters, path segments, or fragment identifiers",[22,297,298,301],{},[25,299,300],{},"Passing special characters in API requests"," — ampersands, equals signs, slashes",[22,303,304,307],{},[25,305,306],{},"Encoding Unicode for web transmission"," — emojis, non-Latin scripts",[22,309,310,313],{},[25,311,312],{},"Building shareable links"," with user-generated content",[60,315,319],{"className":316,"code":317,"language":318,"meta":68,"style":68},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Passing a search query in a URL\nconst search = 'coffee & tea';\nconst url = `\u002Fapi\u002Fsearch?q=${encodeURIComponent(search)}`;\n\u002F\u002F \"\u002Fapi\u002Fsearch?q=coffee%20%26%20tea\"\n","javascript",[30,320,321,330,352,382],{"__ignoreMap":68},[322,323,326],"span",{"class":324,"line":325},"line",1,[322,327,329],{"class":328},"sJ8bj","\u002F\u002F Passing a search query in a URL\n",[322,331,333,337,341,344,348],{"class":324,"line":332},2,[322,334,336],{"class":335},"szBVR","const",[322,338,340],{"class":339},"sj4cs"," search",[322,342,343],{"class":335}," =",[322,345,347],{"class":346},"sZZnC"," 'coffee & tea'",[322,349,351],{"class":350},"sVt8B",";\n",[322,353,355,357,360,362,365,369,372,375,377,380],{"class":324,"line":354},3,[322,356,336],{"class":335},[322,358,359],{"class":339}," url",[322,361,343],{"class":335},[322,363,364],{"class":346}," `\u002Fapi\u002Fsearch?q=${",[322,366,368],{"class":367},"sScJk","encodeURIComponent",[322,370,371],{"class":346},"(",[322,373,374],{"class":350},"search",[322,376,267],{"class":346},[322,378,379],{"class":346},"}`",[322,381,351],{"class":350},[322,383,385],{"class":324,"line":384},4,[322,386,387],{"class":328},"\u002F\u002F \"\u002Fapi\u002Fsearch?q=coffee%20%26%20tea\"\n",[15,389,390],{},"URL encoding keeps the readable parts intact and only escapes what needs escaping.",[10,392,394],{"id":393},"when-to-use-base64","When to Use Base64",[15,396,397],{},"Choose Base64 when:",[19,399,400,406,412,421],{},[22,401,402,405],{},[25,403,404],{},"Sending binary data through text channels"," — images in email, binary payloads in JSON",[22,407,408,411],{},[25,409,410],{},"Embedding small assets inline"," — Data URIs in CSS or HTML",[22,413,414,417,418],{},[25,415,416],{},"Encoding credentials for HTTP Basic Auth"," — ",[30,419,420],{},"Authorization: Basic \u003Cbase64>",[22,422,423,426],{},[25,424,425],{},"Structuring JWT tokens"," — encoding header, payload, and signature",[60,428,430],{"className":316,"code":429,"language":318,"meta":68,"style":68},"\u002F\u002F Embedding a small image as a Data URI\nconst imageBase64 = btoa(binaryImageData);\nconst dataUri = `data:image\u002Fpng;base64,${imageBase64}`;\n",[30,431,432,437,452],{"__ignoreMap":68},[322,433,434],{"class":324,"line":325},[322,435,436],{"class":328},"\u002F\u002F Embedding a small image as a Data URI\n",[322,438,439,441,444,446,449],{"class":324,"line":332},[322,440,336],{"class":335},[322,442,443],{"class":339}," imageBase64",[322,445,343],{"class":335},[322,447,448],{"class":367}," btoa",[322,450,451],{"class":350},"(binaryImageData);\n",[322,453,454,456,459,461,464,467,469],{"class":324,"line":354},[322,455,336],{"class":335},[322,457,458],{"class":339}," dataUri",[322,460,343],{"class":335},[322,462,463],{"class":346}," `data:image\u002Fpng;base64,${",[322,465,466],{"class":350},"imageBase64",[322,468,379],{"class":346},[322,470,351],{"class":350},[15,472,473],{},"Base64 handles any input — including null bytes and non-printable characters that URL encoding cannot process.",[10,475,477],{"id":476},"when-you-need-both","When You Need Both",[15,479,480,481,484],{},"Some scenarios require combining both encodings. The most common case: ",[25,482,483],{},"passing binary data in a URL",".",[48,486,488],{"id":487},"step-by-step-process","Step-by-step process",[490,491,492,498],"ol",{},[22,493,494,497],{},[25,495,496],{},"Base64-encode"," the binary data to convert it to ASCII",[22,499,500,503],{},[25,501,502],{},"URL-encode"," the Base64 output to make it URL-safe",[15,505,506,507,260,509,511,512,514],{},"Standard Base64 contains ",[30,508,259],{},[30,510,263],{},", and ",[30,513,266],{}," — all characters with special meaning in URLs.",[60,516,518],{"className":316,"code":517,"language":318,"meta":68,"style":68},"\u002F\u002F WRONG: Raw Base64 in a URL breaks on + \u002F =\nconst token = btoa(JSON.stringify(payload));\nconst url = `\u002Fverify?token=${token}`;  \u002F\u002F + becomes space, \u002F breaks paths\n\n\u002F\u002F CORRECT: Base64 then URL-encode\nconst token = btoa(JSON.stringify(payload));\nconst url = `\u002Fverify?token=${encodeURIComponent(token)}`;\n\n\u002F\u002F BETTER: Use Base64URL variant (replaces + → -, \u002F → _, removes =)\nconst base64url = base64ToBase64Url(token);\nconst url = `\u002Fverify?token=${base64url}`;  \u002F\u002F No further encoding needed\n",[30,519,520,525,549,571,577,583,604,627,632,638,654],{"__ignoreMap":68},[322,521,522],{"class":324,"line":325},[322,523,524],{"class":328},"\u002F\u002F WRONG: Raw Base64 in a URL breaks on + \u002F =\n",[322,526,527,529,532,534,536,538,541,543,546],{"class":324,"line":332},[322,528,336],{"class":335},[322,530,531],{"class":339}," token",[322,533,343],{"class":335},[322,535,448],{"class":367},[322,537,371],{"class":350},[322,539,540],{"class":339},"JSON",[322,542,484],{"class":350},[322,544,545],{"class":367},"stringify",[322,547,548],{"class":350},"(payload));\n",[322,550,551,553,555,557,560,563,565,568],{"class":324,"line":354},[322,552,336],{"class":335},[322,554,359],{"class":339},[322,556,343],{"class":335},[322,558,559],{"class":346}," `\u002Fverify?token=${",[322,561,562],{"class":350},"token",[322,564,379],{"class":346},[322,566,567],{"class":350},";  ",[322,569,570],{"class":328},"\u002F\u002F + becomes space, \u002F breaks paths\n",[322,572,573],{"class":324,"line":384},[322,574,576],{"emptyLinePlaceholder":575},true,"\n",[322,578,580],{"class":324,"line":579},5,[322,581,582],{"class":328},"\u002F\u002F CORRECT: Base64 then URL-encode\n",[322,584,586,588,590,592,594,596,598,600,602],{"class":324,"line":585},6,[322,587,336],{"class":335},[322,589,531],{"class":339},[322,591,343],{"class":335},[322,593,448],{"class":367},[322,595,371],{"class":350},[322,597,540],{"class":339},[322,599,484],{"class":350},[322,601,545],{"class":367},[322,603,548],{"class":350},[322,605,607,609,611,613,615,617,619,621,623,625],{"class":324,"line":606},7,[322,608,336],{"class":335},[322,610,359],{"class":339},[322,612,343],{"class":335},[322,614,559],{"class":346},[322,616,368],{"class":367},[322,618,371],{"class":346},[322,620,562],{"class":350},[322,622,267],{"class":346},[322,624,379],{"class":346},[322,626,351],{"class":350},[322,628,630],{"class":324,"line":629},8,[322,631,576],{"emptyLinePlaceholder":575},[322,633,635],{"class":324,"line":634},9,[322,636,637],{"class":328},"\u002F\u002F BETTER: Use Base64URL variant (replaces + → -, \u002F → _, removes =)\n",[322,639,641,643,646,648,651],{"class":324,"line":640},10,[322,642,336],{"class":335},[322,644,645],{"class":339}," base64url",[322,647,343],{"class":335},[322,649,650],{"class":367}," base64ToBase64Url",[322,652,653],{"class":350},"(token);\n",[322,655,657,659,661,663,665,668,670,672],{"class":324,"line":656},11,[322,658,336],{"class":335},[322,660,359],{"class":339},[322,662,343],{"class":335},[322,664,559],{"class":346},[322,666,667],{"class":350},"base64url",[322,669,379],{"class":346},[322,671,567],{"class":350},[322,673,674],{"class":328},"\u002F\u002F No further encoding needed\n",[48,676,678],{"id":677},"base64url-the-best-of-both-worlds","Base64URL: The Best of Both Worlds",[15,680,681],{},"Base64URL is a variant that produces URL-safe output directly:",[144,683,684,697],{},[147,685,686],{},[150,687,688,691,694],{},[153,689,690],{},"Base64 Character",[153,692,693],{},"Base64URL Replacement",[153,695,696],{},"Why",[162,698,699,715,731],{},[150,700,701,705,710],{},[167,702,703],{},[30,704,259],{},[167,706,707],{},[30,708,709],{},"-",[167,711,712,714],{},[30,713,259],{}," means space in query strings",[150,716,717,721,726],{},[167,718,719],{},[30,720,263],{},[167,722,723],{},[30,724,725],{},"_",[167,727,728,730],{},[30,729,263],{}," is a path separator",[150,732,733,737,740],{},[167,734,735],{},[30,736,266],{},[167,738,739],{},"(removed)",[167,741,742,744,745],{},[30,743,266],{}," gets percent-encoded to ",[30,746,747],{},"%3D",[15,749,750],{},"JWT uses Base64URL for exactly this reason — tokens travel in URLs, cookies, and headers without extra encoding.",[10,752,754],{"id":753},"size-comparison","Size Comparison",[15,756,757],{},"Size overhead matters for performance, especially in URLs with length limits (~2000 characters for most browsers).",[144,759,760,774],{},[147,761,762],{},[150,763,764,766,769,771],{},[153,765,75],{},[153,767,768],{},"URL-Encoded",[153,770,38],{},[153,772,773],{},"Base64URL",[162,775,776,800,825],{},[150,777,778,783,788,794],{},[167,779,780],{},[30,781,782],{},"hello",[167,784,785,787],{},[30,786,782],{}," (0%)",[167,789,790,793],{},[30,791,792],{},"aGVsbG8="," (+60%)",[167,795,796,799],{},[30,797,798],{},"aGVsbG8"," (+40%)",[150,801,802,807,813,819],{},[167,803,804],{},[30,805,806],{},"hello world",[167,808,809,812],{},[30,810,811],{},"hello%20world"," (+10%)",[167,814,815,818],{},[30,816,817],{},"aGVsbG8gd29ybGQ="," (+64%)",[167,820,821,824],{},[30,822,823],{},"aGVsbG8gd29ybGQ"," (+50%)",[150,826,827,832,838,844],{},[167,828,829],{},[30,830,831],{},"a=1&b=2",[167,833,834,837],{},[30,835,836],{},"a%3D1%26b%3D2"," (+33%)",[167,839,840,843],{},[30,841,842],{},"YT0xJmI9Mg=="," (+100%)",[167,845,846,849],{},[30,847,848],{},"YT0xJmI9Mg"," (+78%)",[15,851,852],{},"Key takeaways:",[19,854,855,860,865],{},[22,856,857,859],{},[25,858,27],{}," adds minimal overhead for mostly-alphanumeric text",[22,861,862,864],{},[25,863,38],{}," always adds ~33% overhead regardless of input",[22,866,867,870],{},[25,868,869],{},"Double-encoding"," (Base64 + URL-encode) adds the most overhead",[10,872,874],{"id":873},"security-considerations","Security Considerations",[48,876,878],{"id":877},"neither-is-encryption","Neither Is Encryption",[15,880,881,882,885,886,889],{},"Both URL encoding and Base64 are ",[25,883,884],{},"encoding",", not ",[25,887,888],{},"encryption",". Anyone can decode them. Never use either to protect sensitive data.",[60,891,893],{"className":316,"code":892,"language":318,"meta":68,"style":68},"\u002F\u002F DANGEROUS: Encoding is not encryption\nconst password = encodeURIComponent('my-secret');  \u002F\u002F Still readable\nconst encoded = btoa('my-secret');                  \u002F\u002F Trivially decoded\n\n\u002F\u002F CORRECT: Use proper encryption\nconst encrypted = encrypt('my-secret', secretKey);\n",[30,894,895,900,923,944,948,953],{"__ignoreMap":68},[322,896,897],{"class":324,"line":325},[322,898,899],{"class":328},"\u002F\u002F DANGEROUS: Encoding is not encryption\n",[322,901,902,904,907,909,912,914,917,920],{"class":324,"line":332},[322,903,336],{"class":335},[322,905,906],{"class":339}," password",[322,908,343],{"class":335},[322,910,911],{"class":367}," encodeURIComponent",[322,913,371],{"class":350},[322,915,916],{"class":346},"'my-secret'",[322,918,919],{"class":350},");  ",[322,921,922],{"class":328},"\u002F\u002F Still readable\n",[322,924,925,927,930,932,934,936,938,941],{"class":324,"line":354},[322,926,336],{"class":335},[322,928,929],{"class":339}," encoded",[322,931,343],{"class":335},[322,933,448],{"class":367},[322,935,371],{"class":350},[322,937,916],{"class":346},[322,939,940],{"class":350},");                  ",[322,942,943],{"class":328},"\u002F\u002F Trivially decoded\n",[322,945,946],{"class":324,"line":384},[322,947,576],{"emptyLinePlaceholder":575},[322,949,950],{"class":324,"line":579},[322,951,952],{"class":328},"\u002F\u002F CORRECT: Use proper encryption\n",[322,954,955,957,960,962,965,967,969],{"class":324,"line":585},[322,956,336],{"class":335},[322,958,959],{"class":339}," encrypted",[322,961,343],{"class":335},[322,963,964],{"class":367}," encrypt",[322,966,371],{"class":350},[322,968,916],{"class":346},[322,970,971],{"class":350},", secretKey);\n",[48,973,975],{"id":974},"common-security-pitfalls","Common security pitfalls",[19,977,978,984,990,996],{},[22,979,980,983],{},[25,981,982],{},"Don't encode passwords"," — use hashing (bcrypt, Argon2) for storage",[22,985,986,989],{},[25,987,988],{},"Don't hide data in URLs"," — encoded URLs appear in logs, browser history, and referrer headers",[22,991,992,995],{},[25,993,994],{},"Validate decoded input"," — decoding is not sanitization; always validate the result",[22,997,998,1001],{},[25,999,1000],{},"Watch for double-encoding attacks"," — servers that decode recursively can be tricked",[10,1003,1005],{"id":1004},"decision-flowchart","Decision Flowchart",[490,1007,1008,1017,1024,1031],{},[22,1009,1010,1011,1014,1015],{},"Do you need to put ",[25,1012,1013],{},"binary data"," (images, files, encrypted bytes) into text? → ",[25,1016,38],{},[22,1018,1010,1019,1021,1022],{},[25,1020,65],{}," into a URL? → ",[25,1023,27],{},[22,1025,1010,1026,1021,1028,1030],{},[25,1027,1013],{},[25,1029,773],{}," (or Base64 + URL-encode)",[22,1032,1033,1034,1037],{},"Do you need to ",[25,1035,1036],{},"protect sensitive data","? → Neither — use encryption",[10,1039,1041],{"id":1040},"related-guides","Related Guides",[19,1043,1044,1051,1057],{},[22,1045,1046],{},[1047,1048,1050],"a",{"href":1049},"\u002Fguides\u002Furl-encoding-guide","What Is URL Encoding",[22,1052,1053],{},[1047,1054,1056],{"href":1055},"\u002Fguides\u002Fpercent-encoding-reference","Percent-Encoding Reference",[22,1058,1059],{},[1047,1060,1062],{"href":1061},"\u002Fguides\u002Fbase64-vs-encryption","Base64 vs Encryption",[10,1064,1066],{"id":1065},"try-it-yourself","Try It Yourself",[15,1068,1069,1070,1074,1075,1079],{},"Encode and decode URLs instantly with our free ",[1047,1071,1073],{"href":1072},"\u002Ftools\u002Furl-encoder","URL Encoder\u002FDecoder"," tool. Need Base64? Check out our ",[1047,1076,1078],{"href":1077},"\u002Ftools\u002Fbase64","Base64 Encoder\u002FDecoder"," as well.",[1081,1082,1083],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":68,"searchDepth":332,"depth":332,"links":1085},[1086,1087,1091,1092,1093,1094,1098,1099,1103,1104,1105],{"id":12,"depth":332,"text":13},{"id":45,"depth":332,"text":46,"children":1088},[1089,1090],{"id":50,"depth":354,"text":51},{"id":103,"depth":354,"text":104},{"id":141,"depth":332,"text":142},{"id":283,"depth":332,"text":284},{"id":393,"depth":332,"text":394},{"id":476,"depth":332,"text":477,"children":1095},[1096,1097],{"id":487,"depth":354,"text":488},{"id":677,"depth":354,"text":678},{"id":753,"depth":332,"text":754},{"id":873,"depth":332,"text":874,"children":1100},[1101,1102],{"id":877,"depth":354,"text":878},{"id":974,"depth":354,"text":975},{"id":1004,"depth":332,"text":1005},{"id":1040,"depth":332,"text":1041},{"id":1065,"depth":332,"text":1066},"2026-05-27","Compare URL encoding and Base64 encoding. Learn their differences, use cases, and when to choose one over the other.","md",{"immutable":575},"\u002Fguides\u002Furl-encoding-vs-base64",{"title":5,"description":1107},"guides\u002Furl-encoding-vs-base64","3OQYYEoSZV-wogzVh25eVmTkdNMw7appZ0tMWI5NFD0",1780401325708]