[{"data":1,"prerenderedAt":1985},["ShallowReactive",2],{"guide-percent-encoding-reference":3},{"id":4,"title":5,"body":6,"date":1977,"description":1978,"extension":1979,"meta":1980,"navigation":1533,"path":1981,"readingTime":1537,"seo":1982,"stem":1983,"__hash__":1984},"guides\u002Fguides\u002Fpercent-encoding-reference.md","Percent-Encoding Reference: Reserved & Unreserved Characters",{"type":7,"value":8,"toc":1953},"minimark",[9,14,23,33,36,40,52,57,425,429,462,466,501,505,508,611,616,620,633,637,640,838,842,845,1340,1351,1355,1362,1463,1467,1572,1576,1580,1631,1635,1702,1706,1777,1781,1912,1916,1937,1941,1949],[10,11,13],"h2",{"id":12},"what-is-percent-encoding","What Is Percent-Encoding?",[15,16,17,18,22],"p",{},"Percent-encoding is the mechanism defined in RFC 3986 for representing data within a URI. It replaces characters with a percent sign ",[19,20,21],"code",{},"%"," followed by two uppercase hexadecimal digits representing the character's byte value.",[24,25,30],"pre",{"className":26,"code":28,"language":29},[27],"language-text","Space   → %20\n&       → %26\né (UTF-8) → %C3%A9\n","text",[19,31,28],{"__ignoreMap":32},"",[15,34,35],{},"This reference covers every character you need to know about when building or parsing URLs.",[10,37,39],{"id":38},"reserved-characters","Reserved Characters",[15,41,42,43,47,48,51],{},"Reserved characters have special meaning in URI syntax. When they appear as ",[44,45,46],"strong",{},"data"," rather than ",[44,49,50],{},"delimiters",", they must be percent-encoded.",[53,54,56],"h3",{"id":55},"complete-reserved-characters-table","Complete Reserved Characters Table",[58,59,60,79],"table",{},[61,62,63],"thead",{},[64,65,66,70,73,76],"tr",{},[67,68,69],"th",{},"Char",[67,71,72],{},"Hex",[67,74,75],{},"Encoded",[67,77,78],{},"Role in URI Syntax",[80,81,82,109,130,151,172,190,207,228,246,263,284,301,318,334,351,369,386,404],"tbody",{},[64,83,84,90,93,98],{},[85,86,87],"td",{},[19,88,89],{},":",[85,91,92],{},"3A",[85,94,95],{},[19,96,97],{},"%3A",[85,99,100,101,104,105,108],{},"Scheme separator (",[19,102,103],{},"https:","), port separator (",[19,106,107],{},":443",")",[64,110,111,116,119,124],{},[85,112,113],{},[19,114,115],{},"\u002F",[85,117,118],{},"2F",[85,120,121],{},[19,122,123],{},"%2F",[85,125,126,127,108],{},"Path separator (",[19,128,129],{},"\u002Fapi\u002Fusers",[64,131,132,137,140,145],{},[85,133,134],{},[19,135,136],{},"?",[85,138,139],{},"3F",[85,141,142],{},[19,143,144],{},"%3F",[85,146,147,148,108],{},"Query string start (",[19,149,150],{},"?q=search",[64,152,153,158,161,166],{},[85,154,155],{},[19,156,157],{},"#",[85,159,160],{},"23",[85,162,163],{},[19,164,165],{},"%23",[85,167,168,169,108],{},"Fragment identifier (",[19,170,171],{},"#section",[64,173,174,179,182,187],{},[85,175,176],{},[19,177,178],{},"[",[85,180,181],{},"5B",[85,183,184],{},[19,185,186],{},"%5B",[85,188,189],{},"IPv6 address delimiter",[64,191,192,197,200,205],{},[85,193,194],{},[19,195,196],{},"]",[85,198,199],{},"5D",[85,201,202],{},[19,203,204],{},"%5D",[85,206,189],{},[64,208,209,214,217,222],{},[85,210,211],{},[19,212,213],{},"@",[85,215,216],{},"40",[85,218,219],{},[19,220,221],{},"%40",[85,223,224,225,108],{},"Authority separator (",[19,226,227],{},"user@host",[64,229,230,235,238,243],{},[85,231,232],{},[19,233,234],{},"!",[85,236,237],{},"21",[85,239,240],{},[19,241,242],{},"%21",[85,244,245],{},"Sub-delim",[64,247,248,253,256,261],{},[85,249,250],{},[19,251,252],{},"$",[85,254,255],{},"24",[85,257,258],{},[19,259,260],{},"%24",[85,262,245],{},[64,264,265,270,273,278],{},[85,266,267],{},[19,268,269],{},"&",[85,271,272],{},"26",[85,274,275],{},[19,276,277],{},"%26",[85,279,280,281,108],{},"Query parameter separator (",[19,282,283],{},"a=1&b=2",[64,285,286,291,294,299],{},[85,287,288],{},[19,289,290],{},"'",[85,292,293],{},"27",[85,295,296],{},[19,297,298],{},"%27",[85,300,245],{},[64,302,303,308,311,316],{},[85,304,305],{},[19,306,307],{},"(",[85,309,310],{},"28",[85,312,313],{},[19,314,315],{},"%28",[85,317,245],{},[64,319,320,324,327,332],{},[85,321,322],{},[19,323,108],{},[85,325,326],{},"29",[85,328,329],{},[19,330,331],{},"%29",[85,333,245],{},[64,335,336,341,344,349],{},[85,337,338],{},[19,339,340],{},"*",[85,342,343],{},"2A",[85,345,346],{},[19,347,348],{},"%2A",[85,350,245],{},[64,352,353,358,361,366],{},[85,354,355],{},[19,356,357],{},"+",[85,359,360],{},"2B",[85,362,363],{},[19,364,365],{},"%2B",[85,367,368],{},"Sub-delim (also means space in form encoding)",[64,370,371,376,379,384],{},[85,372,373],{},[19,374,375],{},",",[85,377,378],{},"2C",[85,380,381],{},[19,382,383],{},"%2C",[85,385,245],{},[64,387,388,393,396,401],{},[85,389,390],{},[19,391,392],{},";",[85,394,395],{},"3B",[85,397,398],{},[19,399,400],{},"%3B",[85,402,403],{},"Sub-delim (param separator)",[64,405,406,411,414,419],{},[85,407,408],{},[19,409,410],{},"=",[85,412,413],{},"3D",[85,415,416],{},[19,417,418],{},"%3D",[85,420,421,422,108],{},"Query parameter assignment (",[19,423,424],{},"key=value",[53,426,428],{"id":427},"when-to-encode-reserved-characters","When to encode reserved characters",[430,431,432,442,450],"ul",{},[433,434,435,438,439],"li",{},[44,436,437],{},"As data in query strings",": ",[19,440,441],{},"?url=https%3A%2F%2Fexample.com",[433,443,444,438,447],{},[44,445,446],{},"As data in path segments",[19,448,449],{},"\u002Fsearch\u002Fhello%20world",[433,451,452,438,455,458,459,461],{},[44,453,454],{},"When the character's delimiter role is not intended",[19,456,457],{},"?q=AT%26T"," (encoding the ",[19,460,269],{}," in \"AT&T\")",[53,463,465],{"id":464},"when-not-to-encode-reserved-characters","When NOT to encode reserved characters",[430,467,468,477,485,493],{},[433,469,470,472,473,476],{},[19,471,115],{}," between path segments: ",[19,474,475],{},"\u002Fapi\u002Fusers\u002F42"," — leave as-is",[433,478,479,481,482,476],{},[19,480,136],{}," starting a query string: ",[19,483,484],{},"?search=hello",[433,486,487,489,490,476],{},[19,488,410],{}," assigning query values: ",[19,491,492],{},"?page=1",[433,494,495,497,498,476],{},[19,496,269],{}," separating parameters: ",[19,499,500],{},"?a=1&b=2",[10,502,504],{"id":503},"unreserved-characters","Unreserved Characters",[15,506,507],{},"Unreserved characters never need encoding and should not be encoded. Encoding them produces equivalent but unnecessarily long URLs.",[58,509,510,523],{},[61,511,512],{},[64,513,514,517,520],{},[67,515,516],{},"Category",[67,518,519],{},"Characters",[67,521,522],{},"Count",[80,524,525,537,549,562,575,587,599],{},[64,526,527,530,535],{},[85,528,529],{},"Uppercase letters",[85,531,532],{},[19,533,534],{},"A B C ... Z",[85,536,272],{},[64,538,539,542,547],{},[85,540,541],{},"Lowercase letters",[85,543,544],{},[19,545,546],{},"a b c ... z",[85,548,272],{},[64,550,551,554,559],{},[85,552,553],{},"Digits",[85,555,556],{},[19,557,558],{},"0 1 2 ... 9",[85,560,561],{},"10",[64,563,564,567,572],{},[85,565,566],{},"Hyphen",[85,568,569],{},[19,570,571],{},"-",[85,573,574],{},"1",[64,576,577,580,585],{},[85,578,579],{},"Period",[85,581,582],{},[19,583,584],{},".",[85,586,574],{},[64,588,589,592,597],{},[85,590,591],{},"Underscore",[85,593,594],{},[19,595,596],{},"_",[85,598,574],{},[64,600,601,604,609],{},[85,602,603],{},"Tilde",[85,605,606],{},[19,607,608],{},"~",[85,610,574],{},[15,612,613],{},[44,614,615],{},"Total: 66 unreserved characters",[53,617,619],{"id":618},"why-tilde-matters","Why tilde (~) matters",[15,621,622,623,625,626,628,629,632],{},"Older specifications (RFC 2396) classified ",[19,624,608],{}," as a reserved character. RFC 3986 moved it to unreserved. Some legacy systems still encode ",[19,627,608],{}," as ",[19,630,631],{},"%7E",", but this is unnecessary and should be avoided.",[10,634,636],{"id":635},"common-encoded-values-quick-reference","Common Encoded Values Quick Reference",[15,638,639],{},"The table below covers frequently encoded characters with practical context:",[58,641,642,654],{},[61,643,644],{},[64,645,646,649,651],{},[67,647,648],{},"Character",[67,650,75],{},[67,652,653],{},"Common Scenario",[80,655,656,669,684,698,713,727,742,757,772,787,798,812,825],{},[64,657,658,661,666],{},[85,659,660],{},"Space",[85,662,663],{},[19,664,665],{},"%20",[85,667,668],{},"Spaces in any URL component",[64,670,671,676,681],{},[85,672,673],{},[19,674,675],{},"\"",[85,677,678],{},[19,679,680],{},"%22",[85,682,683],{},"Quotes in HTML attribute URLs",[64,685,686,690,695],{},[85,687,688],{},[19,689,21],{},[85,691,692],{},[19,693,694],{},"%25",[85,696,697],{},"Literal percent sign (avoid double-encoding)",[64,699,700,705,710],{},[85,701,702],{},[19,703,704],{},"\u003C",[85,706,707],{},[19,708,709],{},"%3C",[85,711,712],{},"Angle brackets in URL data",[64,714,715,720,725],{},[85,716,717],{},[19,718,719],{},">",[85,721,722],{},[19,723,724],{},"%3E",[85,726,712],{},[64,728,729,734,739],{},[85,730,731],{},[19,732,733],{},"\\",[85,735,736],{},[19,737,738],{},"%5C",[85,740,741],{},"Backslash in Windows paths",[64,743,744,749,754],{},[85,745,746],{},[19,747,748],{},"^",[85,750,751],{},[19,752,753],{},"%5E",[85,755,756],{},"Caret in data values",[64,758,759,764,769],{},[85,760,761],{},[19,762,763],{},"`",[85,765,766],{},[19,767,768],{},"%60",[85,770,771],{},"Backtick in data values",[64,773,774,779,784],{},[85,775,776],{},[19,777,778],{},"{",[85,780,781],{},[19,782,783],{},"%7B",[85,785,786],{},"Curly brace in JSON data",[64,788,789,791,793],{},[85,790,763],{},[85,792,763],{},[85,794,795],{},[19,796,797],{},"%7C",[64,799,800,805,810],{},[85,801,802],{},[19,803,804],{},"}",[85,806,807],{},[19,808,809],{},"%7D",[85,811,786],{},[64,813,814,817,822],{},[85,815,816],{},"Tab",[85,818,819],{},[19,820,821],{},"%09",[85,823,824],{},"Tab character in form data",[64,826,827,830,835],{},[85,828,829],{},"Newline",[85,831,832],{},[19,833,834],{},"%0A",[85,836,837],{},"Line break in text",[10,839,841],{"id":840},"ascii-printable-characters-full-table","ASCII Printable Characters Full Table",[15,843,844],{},"Every printable ASCII character and its encoding status:",[58,846,847,869],{},[61,848,849],{},[64,850,851,854,856,858,861,863,865,867],{},[67,852,853],{},"Dec",[67,855,69],{},[67,857,75],{},[67,859,860],{},"Status",[67,862,853],{},[67,864,69],{},[67,866,75],{},[67,868,860],{},[80,870,871,899,927,955,983,1011,1039,1067,1095,1122,1150,1178,1206,1234,1260,1287,1315],{},[64,872,873,876,878,882,885,888,892,896],{},[85,874,875],{},"32",[85,877,660],{},[85,879,880],{},[19,881,665],{},[85,883,884],{},"Encode",[85,886,887],{},"58",[85,889,890],{},[19,891,89],{},[85,893,894],{},[19,895,97],{},[85,897,898],{},"Reserved",[64,900,901,904,908,912,914,917,921,925],{},[85,902,903],{},"33",[85,905,906],{},[19,907,234],{},[85,909,910],{},[19,911,242],{},[85,913,898],{},[85,915,916],{},"59",[85,918,919],{},[19,920,392],{},[85,922,923],{},[19,924,400],{},[85,926,898],{},[64,928,929,932,936,940,942,945,949,953],{},[85,930,931],{},"34",[85,933,934],{},[19,935,675],{},[85,937,938],{},[19,939,680],{},[85,941,884],{},[85,943,944],{},"60",[85,946,947],{},[19,948,704],{},[85,950,951],{},[19,952,709],{},[85,954,884],{},[64,956,957,960,964,968,970,973,977,981],{},[85,958,959],{},"35",[85,961,962],{},[19,963,157],{},[85,965,966],{},[19,967,165],{},[85,969,898],{},[85,971,972],{},"61",[85,974,975],{},[19,976,410],{},[85,978,979],{},[19,980,418],{},[85,982,898],{},[64,984,985,988,992,996,998,1001,1005,1009],{},[85,986,987],{},"36",[85,989,990],{},[19,991,252],{},[85,993,994],{},[19,995,260],{},[85,997,898],{},[85,999,1000],{},"62",[85,1002,1003],{},[19,1004,719],{},[85,1006,1007],{},[19,1008,724],{},[85,1010,884],{},[64,1012,1013,1016,1020,1024,1026,1029,1033,1037],{},[85,1014,1015],{},"37",[85,1017,1018],{},[19,1019,21],{},[85,1021,1022],{},[19,1023,694],{},[85,1025,884],{},[85,1027,1028],{},"63",[85,1030,1031],{},[19,1032,136],{},[85,1034,1035],{},[19,1036,144],{},[85,1038,898],{},[64,1040,1041,1044,1048,1052,1054,1057,1061,1065],{},[85,1042,1043],{},"38",[85,1045,1046],{},[19,1047,269],{},[85,1049,1050],{},[19,1051,277],{},[85,1053,898],{},[85,1055,1056],{},"64",[85,1058,1059],{},[19,1060,213],{},[85,1062,1063],{},[19,1064,221],{},[85,1066,898],{},[64,1068,1069,1072,1076,1080,1082,1085,1089,1093],{},[85,1070,1071],{},"39",[85,1073,1074],{},[19,1075,290],{},[85,1077,1078],{},[19,1079,298],{},[85,1081,898],{},[85,1083,1084],{},"91",[85,1086,1087],{},[19,1088,178],{},[85,1090,1091],{},[19,1092,186],{},[85,1094,898],{},[64,1096,1097,1099,1103,1107,1109,1112,1116,1120],{},[85,1098,216],{},[85,1100,1101],{},[19,1102,307],{},[85,1104,1105],{},[19,1106,315],{},[85,1108,898],{},[85,1110,1111],{},"92",[85,1113,1114],{},[19,1115,733],{},[85,1117,1118],{},[19,1119,738],{},[85,1121,884],{},[64,1123,1124,1127,1131,1135,1137,1140,1144,1148],{},[85,1125,1126],{},"41",[85,1128,1129],{},[19,1130,108],{},[85,1132,1133],{},[19,1134,331],{},[85,1136,898],{},[85,1138,1139],{},"93",[85,1141,1142],{},[19,1143,196],{},[85,1145,1146],{},[19,1147,204],{},[85,1149,898],{},[64,1151,1152,1155,1159,1163,1165,1168,1172,1176],{},[85,1153,1154],{},"42",[85,1156,1157],{},[19,1158,340],{},[85,1160,1161],{},[19,1162,348],{},[85,1164,898],{},[85,1166,1167],{},"94",[85,1169,1170],{},[19,1171,748],{},[85,1173,1174],{},[19,1175,753],{},[85,1177,884],{},[64,1179,1180,1183,1187,1191,1193,1196,1200,1203],{},[85,1181,1182],{},"43",[85,1184,1185],{},[19,1186,357],{},[85,1188,1189],{},[19,1190,365],{},[85,1192,898],{},[85,1194,1195],{},"95",[85,1197,1198],{},[19,1199,596],{},[85,1201,1202],{},"—",[85,1204,1205],{},"Unreserved",[64,1207,1208,1211,1215,1219,1221,1224,1228,1232],{},[85,1209,1210],{},"44",[85,1212,1213],{},[19,1214,375],{},[85,1216,1217],{},[19,1218,383],{},[85,1220,898],{},[85,1222,1223],{},"96",[85,1225,1226],{},[19,1227,763],{},[85,1229,1230],{},[19,1231,768],{},[85,1233,884],{},[64,1235,1236,1239,1243,1245,1247,1250,1254,1258],{},[85,1237,1238],{},"45",[85,1240,1241],{},[19,1242,571],{},[85,1244,1202],{},[85,1246,1205],{},[85,1248,1249],{},"123",[85,1251,1252],{},[19,1253,778],{},[85,1255,1256],{},[19,1257,783],{},[85,1259,884],{},[64,1261,1262,1265,1269,1271,1273,1276,1281,1285],{},[85,1263,1264],{},"46",[85,1266,1267],{},[19,1268,584],{},[85,1270,1202],{},[85,1272,1205],{},[85,1274,1275],{},"124",[85,1277,1278],{},[19,1279,1280],{},"|",[85,1282,1283],{},[19,1284,797],{},[85,1286,884],{},[64,1288,1289,1292,1296,1300,1302,1305,1309,1313],{},[85,1290,1291],{},"47",[85,1293,1294],{},[19,1295,115],{},[85,1297,1298],{},[19,1299,123],{},[85,1301,898],{},[85,1303,1304],{},"125",[85,1306,1307],{},[19,1308,804],{},[85,1310,1311],{},[19,1312,809],{},[85,1314,884],{},[64,1316,1317,1320,1325,1327,1329,1332,1336,1338],{},[85,1318,1319],{},"48–57",[85,1321,1322],{},[19,1323,1324],{},"0–9",[85,1326,1202],{},[85,1328,1205],{},[85,1330,1331],{},"126",[85,1333,1334],{},[19,1335,608],{},[85,1337,1202],{},[85,1339,1205],{},[15,1341,1342,1343,1346,1347,1350],{},"Characters 65–90 (",[19,1344,1345],{},"A–Z",") and 97–122 (",[19,1348,1349],{},"a–z",") are all unreserved and omitted from this table for brevity.",[10,1352,1354],{"id":1353},"unicode-and-utf-8-encoding","Unicode and UTF-8 Encoding",[15,1356,1357,1358,1361],{},"Non-ASCII characters use UTF-8 encoding before percent-encoding. Each UTF-8 byte becomes a separate ",[19,1359,1360],{},"%XX"," sequence.",[58,1363,1364,1376],{},[61,1365,1366],{},[64,1367,1368,1370,1373],{},[67,1369,648],{},[67,1371,1372],{},"UTF-8 Bytes",[67,1374,1375],{},"Percent-Encoded",[80,1377,1378,1395,1412,1429,1446],{},[64,1379,1380,1385,1390],{},[85,1381,1382],{},[19,1383,1384],{},"é",[85,1386,1387],{},[19,1388,1389],{},"C3 A9",[85,1391,1392],{},[19,1393,1394],{},"%C3%A9",[64,1396,1397,1402,1407],{},[85,1398,1399],{},[19,1400,1401],{},"©",[85,1403,1404],{},[19,1405,1406],{},"C2 A9",[85,1408,1409],{},[19,1410,1411],{},"%C2%A9",[64,1413,1414,1419,1424],{},[85,1415,1416],{},[19,1417,1418],{},"€",[85,1420,1421],{},[19,1422,1423],{},"E2 82 AC",[85,1425,1426],{},[19,1427,1428],{},"%E2%82%AC",[64,1430,1431,1436,1441],{},[85,1432,1433],{},[19,1434,1435],{},"中",[85,1437,1438],{},[19,1439,1440],{},"E4 B8 AD",[85,1442,1443],{},[19,1444,1445],{},"%E4%B8%AD",[64,1447,1448,1453,1458],{},[85,1449,1450],{},[19,1451,1452],{},"🎉",[85,1454,1455],{},[19,1456,1457],{},"F0 9F 8E 89",[85,1459,1460],{},[19,1461,1462],{},"%F0%9F%8E%89",[53,1464,1466],{"id":1465},"practical-example","Practical example",[24,1468,1472],{"className":1469,"code":1470,"language":1471,"meta":32,"style":32},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Encoding a URL with Unicode\nconst name = 'José García';\nconst encoded = encodeURIComponent(name);\n\u002F\u002F \"Jos%C3%A9%20Garc%C3%ADa\"\n\n\u002F\u002F The space could also be + in form encoding\nconst formEncoded = new URLSearchParams({ name }).toString();\n\u002F\u002F \"name=Jos%C3%A9+Garc%C3%ADa\"\n","javascript",[19,1473,1474,1483,1505,1522,1528,1535,1541,1566],{"__ignoreMap":32},[1475,1476,1479],"span",{"class":1477,"line":1478},"line",1,[1475,1480,1482],{"class":1481},"sJ8bj","\u002F\u002F Encoding a URL with Unicode\n",[1475,1484,1486,1490,1494,1497,1501],{"class":1477,"line":1485},2,[1475,1487,1489],{"class":1488},"szBVR","const",[1475,1491,1493],{"class":1492},"sj4cs"," name",[1475,1495,1496],{"class":1488}," =",[1475,1498,1500],{"class":1499},"sZZnC"," 'José García'",[1475,1502,1504],{"class":1503},"sVt8B",";\n",[1475,1506,1508,1510,1513,1515,1519],{"class":1477,"line":1507},3,[1475,1509,1489],{"class":1488},[1475,1511,1512],{"class":1492}," encoded",[1475,1514,1496],{"class":1488},[1475,1516,1518],{"class":1517},"sScJk"," encodeURIComponent",[1475,1520,1521],{"class":1503},"(name);\n",[1475,1523,1525],{"class":1477,"line":1524},4,[1475,1526,1527],{"class":1481},"\u002F\u002F \"Jos%C3%A9%20Garc%C3%ADa\"\n",[1475,1529,1531],{"class":1477,"line":1530},5,[1475,1532,1534],{"emptyLinePlaceholder":1533},true,"\n",[1475,1536,1538],{"class":1477,"line":1537},6,[1475,1539,1540],{"class":1481},"\u002F\u002F The space could also be + in form encoding\n",[1475,1542,1544,1546,1549,1551,1554,1557,1560,1563],{"class":1477,"line":1543},7,[1475,1545,1489],{"class":1488},[1475,1547,1548],{"class":1492}," formEncoded",[1475,1550,1496],{"class":1488},[1475,1552,1553],{"class":1488}," new",[1475,1555,1556],{"class":1517}," URLSearchParams",[1475,1558,1559],{"class":1503},"({ name }).",[1475,1561,1562],{"class":1517},"toString",[1475,1564,1565],{"class":1503},"();\n",[1475,1567,1569],{"class":1477,"line":1568},8,[1475,1570,1571],{"class":1481},"\u002F\u002F \"name=Jos%C3%A9+Garc%C3%ADa\"\n",[10,1573,1575],{"id":1574},"_4-practical-examples","4 Practical Examples",[53,1577,1579],{"id":1578},"_1-passing-a-url-as-a-query-parameter","1. Passing a URL as a query parameter",[24,1581,1583],{"className":1469,"code":1582,"language":1471,"meta":32,"style":32},"const targetUrl = 'https:\u002F\u002Fexample.com\u002Fsearch?q=hello&lang=en';\nconst link = `\u002Fredirect?url=${encodeURIComponent(targetUrl)}`;\n\u002F\u002F \"\u002Fredirect?url=https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%26lang%3Den\"\n",[19,1584,1585,1599,1626],{"__ignoreMap":32},[1475,1586,1587,1589,1592,1594,1597],{"class":1477,"line":1478},[1475,1588,1489],{"class":1488},[1475,1590,1591],{"class":1492}," targetUrl",[1475,1593,1496],{"class":1488},[1475,1595,1596],{"class":1499}," 'https:\u002F\u002Fexample.com\u002Fsearch?q=hello&lang=en'",[1475,1598,1504],{"class":1503},[1475,1600,1601,1603,1606,1608,1611,1614,1616,1619,1621,1624],{"class":1477,"line":1485},[1475,1602,1489],{"class":1488},[1475,1604,1605],{"class":1492}," link",[1475,1607,1496],{"class":1488},[1475,1609,1610],{"class":1499}," `\u002Fredirect?url=${",[1475,1612,1613],{"class":1517},"encodeURIComponent",[1475,1615,307],{"class":1499},[1475,1617,1618],{"class":1503},"targetUrl",[1475,1620,108],{"class":1499},[1475,1622,1623],{"class":1499},"}`",[1475,1625,1504],{"class":1503},[1475,1627,1628],{"class":1477,"line":1507},[1475,1629,1630],{"class":1481},"\u002F\u002F \"\u002Fredirect?url=https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%26lang%3Den\"\n",[53,1632,1634],{"id":1633},"_2-encoding-json-data-in-a-url","2. Encoding JSON data in a URL",[24,1636,1638],{"className":1469,"code":1637,"language":1471,"meta":32,"style":32},"const filters = JSON.stringify({ category: 'A&B', price: '\u003C100' });\nconst url = `\u002Fproducts?f=${encodeURIComponent(filters)}`;\n\u002F\u002F \"\u002Fproducts?f=%7B%22category%22%3A%22A%26B%22%2C%22price%22%3A%22%3C100%22%7D\"\n",[19,1639,1640,1672,1697],{"__ignoreMap":32},[1475,1641,1642,1644,1647,1649,1652,1654,1657,1660,1663,1666,1669],{"class":1477,"line":1478},[1475,1643,1489],{"class":1488},[1475,1645,1646],{"class":1492}," filters",[1475,1648,1496],{"class":1488},[1475,1650,1651],{"class":1492}," JSON",[1475,1653,584],{"class":1503},[1475,1655,1656],{"class":1517},"stringify",[1475,1658,1659],{"class":1503},"({ category: ",[1475,1661,1662],{"class":1499},"'A&B'",[1475,1664,1665],{"class":1503},", price: ",[1475,1667,1668],{"class":1499},"'\u003C100'",[1475,1670,1671],{"class":1503}," });\n",[1475,1673,1674,1676,1679,1681,1684,1686,1688,1691,1693,1695],{"class":1477,"line":1485},[1475,1675,1489],{"class":1488},[1475,1677,1678],{"class":1492}," url",[1475,1680,1496],{"class":1488},[1475,1682,1683],{"class":1499}," `\u002Fproducts?f=${",[1475,1685,1613],{"class":1517},[1475,1687,307],{"class":1499},[1475,1689,1690],{"class":1503},"filters",[1475,1692,108],{"class":1499},[1475,1694,1623],{"class":1499},[1475,1696,1504],{"class":1503},[1475,1698,1699],{"class":1477,"line":1507},[1475,1700,1701],{"class":1481},"\u002F\u002F \"\u002Fproducts?f=%7B%22category%22%3A%22A%26B%22%2C%22price%22%3A%22%3C100%22%7D\"\n",[53,1703,1705],{"id":1704},"_3-building-a-mailto-link-with-special-characters","3. Building a mailto link with special characters",[24,1707,1709],{"className":1469,"code":1708,"language":1471,"meta":32,"style":32},"const subject = 'Questions & Answers';\nconst body = 'What is 50% off?\";\nconst mailto = `mailto:help@example.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;\n",[19,1710,1711,1725,1740],{"__ignoreMap":32},[1475,1712,1713,1715,1718,1720,1723],{"class":1477,"line":1478},[1475,1714,1489],{"class":1488},[1475,1716,1717],{"class":1492}," subject",[1475,1719,1496],{"class":1488},[1475,1721,1722],{"class":1499}," 'Questions & Answers'",[1475,1724,1504],{"class":1503},[1475,1726,1727,1729,1732,1734,1737],{"class":1477,"line":1485},[1475,1728,1489],{"class":1488},[1475,1730,1731],{"class":1492}," body",[1475,1733,1496],{"class":1488},[1475,1735,1736],{"class":1499}," 'What is 50% off?\"",[1475,1738,1504],{"class":1739},"s7hpK",[1475,1741,1742,1744,1747,1749,1752,1754,1756,1759,1761,1764,1766,1768,1771,1773,1775],{"class":1477,"line":1507},[1475,1743,1489],{"class":1488},[1475,1745,1746],{"class":1492}," mailto",[1475,1748,1496],{"class":1488},[1475,1750,1751],{"class":1499}," `mailto:help@example.com?subject=${",[1475,1753,1613],{"class":1517},[1475,1755,307],{"class":1499},[1475,1757,1758],{"class":1503},"subject",[1475,1760,108],{"class":1499},[1475,1762,1763],{"class":1499},"}&body=${",[1475,1765,1613],{"class":1517},[1475,1767,307],{"class":1499},[1475,1769,1770],{"class":1503},"body",[1475,1772,108],{"class":1499},[1475,1774,1623],{"class":1499},[1475,1776,1504],{"class":1503},[53,1778,1780],{"id":1779},"_4-avoiding-double-encoding","4. Avoiding double-encoding",[24,1782,1784],{"className":1469,"code":1783,"language":1471,"meta":32,"style":32},"\u002F\u002F WRONG: Double-encoding produces %2520 instead of %20\nconst already = encodeURIComponent('hello world'); \u002F\u002F \"hello%20world\"\nconst double = encodeURIComponent(already);         \u002F\u002F \"hello%2520world\"\n\n\u002F\u002F CORRECT: Check before encoding\nfunction safeEncode(str) {\n  try {\n    return encodeURIComponent(decodeURIComponent(str));\n  } catch {\n    return encodeURIComponent(str);\n  }\n}\n",[19,1785,1786,1791,1813,1830,1834,1839,1856,1864,1879,1890,1900,1906],{"__ignoreMap":32},[1475,1787,1788],{"class":1477,"line":1478},[1475,1789,1790],{"class":1481},"\u002F\u002F WRONG: Double-encoding produces %2520 instead of %20\n",[1475,1792,1793,1795,1798,1800,1802,1804,1807,1810],{"class":1477,"line":1485},[1475,1794,1489],{"class":1488},[1475,1796,1797],{"class":1492}," already",[1475,1799,1496],{"class":1488},[1475,1801,1518],{"class":1517},[1475,1803,307],{"class":1503},[1475,1805,1806],{"class":1499},"'hello world'",[1475,1808,1809],{"class":1503},"); ",[1475,1811,1812],{"class":1481},"\u002F\u002F \"hello%20world\"\n",[1475,1814,1815,1817,1820,1822,1824,1827],{"class":1477,"line":1507},[1475,1816,1489],{"class":1488},[1475,1818,1819],{"class":1492}," double",[1475,1821,1496],{"class":1488},[1475,1823,1518],{"class":1517},[1475,1825,1826],{"class":1503},"(already);         ",[1475,1828,1829],{"class":1481},"\u002F\u002F \"hello%2520world\"\n",[1475,1831,1832],{"class":1477,"line":1524},[1475,1833,1534],{"emptyLinePlaceholder":1533},[1475,1835,1836],{"class":1477,"line":1530},[1475,1837,1838],{"class":1481},"\u002F\u002F CORRECT: Check before encoding\n",[1475,1840,1841,1844,1847,1849,1853],{"class":1477,"line":1537},[1475,1842,1843],{"class":1488},"function",[1475,1845,1846],{"class":1517}," safeEncode",[1475,1848,307],{"class":1503},[1475,1850,1852],{"class":1851},"s4XuR","str",[1475,1854,1855],{"class":1503},") {\n",[1475,1857,1858,1861],{"class":1477,"line":1543},[1475,1859,1860],{"class":1488},"  try",[1475,1862,1863],{"class":1503}," {\n",[1475,1865,1866,1869,1871,1873,1876],{"class":1477,"line":1568},[1475,1867,1868],{"class":1488},"    return",[1475,1870,1518],{"class":1517},[1475,1872,307],{"class":1503},[1475,1874,1875],{"class":1517},"decodeURIComponent",[1475,1877,1878],{"class":1503},"(str));\n",[1475,1880,1882,1885,1888],{"class":1477,"line":1881},9,[1475,1883,1884],{"class":1503},"  } ",[1475,1886,1887],{"class":1488},"catch",[1475,1889,1863],{"class":1503},[1475,1891,1893,1895,1897],{"class":1477,"line":1892},10,[1475,1894,1868],{"class":1488},[1475,1896,1518],{"class":1517},[1475,1898,1899],{"class":1503},"(str);\n",[1475,1901,1903],{"class":1477,"line":1902},11,[1475,1904,1905],{"class":1503},"  }\n",[1475,1907,1909],{"class":1477,"line":1908},12,[1475,1910,1911],{"class":1503},"}\n",[10,1913,1915],{"id":1914},"related-guides","Related Guides",[430,1917,1918,1925,1931],{},[433,1919,1920],{},[1921,1922,1924],"a",{"href":1923},"\u002Fguides\u002Furl-encoding-guide","What Is URL Encoding",[433,1926,1927],{},[1921,1928,1930],{"href":1929},"\u002Fguides\u002Furl-encoding-vs-base64","URL Encoding vs Base64",[433,1932,1933],{},[1921,1934,1936],{"href":1935},"\u002Fguides\u002Fbase64url-difference","Base64URL Difference",[10,1938,1940],{"id":1939},"try-it-yourself","Try It Yourself",[15,1942,1943,1944,1948],{},"Encode and decode any string instantly with our free ",[1921,1945,1947],{"href":1946},"\u002Ftools\u002Furl-encoder","URL Encoder\u002FDecoder"," tool. Perfect for debugging URLs, testing API parameters, or learning percent-encoding hands-on.",[1950,1951,1952],"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);}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":32,"searchDepth":1485,"depth":1485,"links":1954},[1955,1956,1961,1964,1965,1966,1969,1975,1976],{"id":12,"depth":1485,"text":13},{"id":38,"depth":1485,"text":39,"children":1957},[1958,1959,1960],{"id":55,"depth":1507,"text":56},{"id":427,"depth":1507,"text":428},{"id":464,"depth":1507,"text":465},{"id":503,"depth":1485,"text":504,"children":1962},[1963],{"id":618,"depth":1507,"text":619},{"id":635,"depth":1485,"text":636},{"id":840,"depth":1485,"text":841},{"id":1353,"depth":1485,"text":1354,"children":1967},[1968],{"id":1465,"depth":1507,"text":1466},{"id":1574,"depth":1485,"text":1575,"children":1970},[1971,1972,1973,1974],{"id":1578,"depth":1507,"text":1579},{"id":1633,"depth":1507,"text":1634},{"id":1704,"depth":1507,"text":1705},{"id":1779,"depth":1507,"text":1780},{"id":1914,"depth":1485,"text":1915},{"id":1939,"depth":1485,"text":1940},"2026-05-27","Complete reference table of percent-encoded characters. Reserved and unreserved characters in RFC 3986 explained.","md",{"immutable":1533},"\u002Fguides\u002Fpercent-encoding-reference",{"title":5,"description":1978},"guides\u002Fpercent-encoding-reference","vcs2YhPAI4SfU-mpY3h-Sgh1Mnr-CbikslBnuMvISmw",1780401325256]