[{"data":1,"prerenderedAt":3049},["ShallowReactive",2],{"blog-list-en":3},[4,506,940,1294,1911,2293,2645,2826],{"id":5,"title":6,"author":7,"body":8,"description":490,"draft":491,"extension":492,"lang":493,"meta":494,"navigation":495,"path":496,"pubDate":497,"relatedTool":498,"seo":499,"stem":500,"tags":501,"__hash__":505},"blog\u002Fblog\u002Funix-timestamp-converter-guide.mdx","Unix Timestamp Converter: What It Is and How to Use It","ujiffy team",{"type":9,"value":10,"toc":480},"minimark",[11,25,28,33,48,62,65,69,75,97,108,114,118,125,131,141,158,164,170,174,177,257,268,273,284,288,293,296,349,352,375,380,382,419,421,436,439,443,457,464,473,476],[12,13,14,15,19,20,24],"p",{},"If you've spent any time reading server logs, working with APIs, or debugging date-related bugs, you've probably run into a number like ",[16,17,18],"code",{},"1715760000",". It's not random — it's a ",[21,22,23],"strong",{},"Unix timestamp",", and it represents a very specific moment in time.",[12,26,27],{},"In this guide, you'll learn exactly what Unix timestamps are, why developers use them, and how to convert them to human-readable dates (and back) using an online tool.",[29,30,32],"h2",{"id":31},"what-is-a-unix-timestamp","What Is a Unix Timestamp?",[12,34,35,36,39,40,43,44,47],{},"A Unix timestamp (also called ",[21,37,38],{},"epoch time",") is the number of ",[21,41,42],{},"seconds that have elapsed since January 1, 1970, at 00:00:00 UTC",". That reference point — midnight UTC on January 1st, 1970 — is called the ",[21,45,46],{},"Unix epoch",".",[12,49,50,51,53,54,58,59,47],{},"So ",[16,52,18],{}," doesn't mean \"some random big number.\" It means: ",[55,56,57],"em",{},"1,715,760,000 seconds after January 1, 1970, UTC"," — which works out to ",[21,60,61],{},"May 15, 2025, 08:00:00 UTC",[12,63,64],{},"This system was established with the Unix operating system in the early 1970s, and it's been the standard for representing time in computing ever since.",[29,66,68],{"id":67},"seconds-vs-milliseconds-an-important-distinction","Seconds vs. Milliseconds: An Important Distinction",[12,70,71,72,47],{},"Here's a source of confusion that trips up a lot of developers: ",[21,73,74],{},"not all timestamps are in seconds",[76,77,78,88],"ul",{},[79,80,81,84,85,87],"li",{},[21,82,83],{},"Unix timestamp (seconds):"," ",[16,86,18],{}," — 10 digits",[79,89,90,84,93,96],{},[21,91,92],{},"Millisecond timestamp:",[16,94,95],{},"1715760000000"," — 13 digits",[12,98,99,100,103,104,107],{},"JavaScript's ",[16,101,102],{},"Date.now()"," returns milliseconds. Many databases and APIs also use milliseconds. Python's ",[16,105,106],{},"time.time()"," returns seconds (as a float). The distinction matters — if you pass a millisecond timestamp to code expecting seconds, you'll get a date in the year 57,000-something.",[12,109,110,113],{},[21,111,112],{},"Quick rule of thumb:"," If your timestamp is 10 digits, it's probably seconds. If it's 13 digits, it's probably milliseconds.",[29,115,117],{"id":116},"why-do-developers-use-unix-timestamps","Why Do Developers Use Unix Timestamps?",[12,119,120,121,124],{},"It might seem strange to store dates as big numbers instead of something like ",[16,122,123],{},"\"2025-05-15 08:00:00\"",". But timestamps have real advantages:",[12,126,127,130],{},[21,128,129],{},"Timezone-independent."," A Unix timestamp always refers to a moment in UTC. When you convert it to a local time, you apply the timezone offset at display time — not at storage time. This eliminates entire categories of timezone-related bugs.",[12,132,133,136,137,140],{},[21,134,135],{},"Easy arithmetic."," Want to know if something happened more than 7 days ago? Just compare: ",[16,138,139],{},"now - timestamp > 7 * 24 * 3600",". No string parsing, no date library, no edge cases around month lengths.",[12,142,143,146,147,150,151,150,154,157],{},[21,144,145],{},"Universally supported."," Every programming language and database understands Unix timestamps. You don't need to worry about date string formatting inconsistencies (",[16,148,149],{},"MM\u002FDD\u002FYYYY"," vs ",[16,152,153],{},"DD-MM-YYYY",[16,155,156],{},"YYYY-MM-DD",").",[12,159,160,163],{},[21,161,162],{},"Compact storage."," Storing a single integer takes less space than storing a formatted date string, which matters at scale.",[12,165,166,169],{},[21,167,168],{},"Sortable."," Timestamps sort correctly as plain integers. No special date sorting logic needed.",[29,171,173],{"id":172},"common-timestamp-reference-values","Common Timestamp Reference Values",[12,175,176],{},"It helps to have a few anchor points memorized so you can sanity-check timestamps at a glance:",[178,179,180,193],"table",{},[181,182,183],"thead",{},[184,185,186,190],"tr",{},[187,188,189],"th",{},"Date",[187,191,192],{},"Unix Timestamp (seconds)",[194,195,196,207,217,227,237,247],"tbody",{},[184,197,198,202],{},[199,200,201],"td",{},"January 1, 2000 (Y2K)",[199,203,204],{},[16,205,206],{},"946684800",[184,208,209,212],{},[199,210,211],{},"January 1, 2010",[199,213,214],{},[16,215,216],{},"1262304000",[184,218,219,222],{},[199,220,221],{},"January 1, 2020",[199,223,224],{},[16,225,226],{},"1577836800",[184,228,229,232],{},[199,230,231],{},"January 1, 2024",[199,233,234],{},[16,235,236],{},"1704067200",[184,238,239,242],{},[199,240,241],{},"January 1, 2025",[199,243,244],{},[16,245,246],{},"1735689600",[184,248,249,252],{},[199,250,251],{},"January 1, 2030",[199,253,254],{},[16,255,256],{},"1893456000",[12,258,259,260,263,264,267],{},"If you see a timestamp around ",[16,261,262],{},"1.7 billion",", it's somewhere in 2023–2024. If you see one around ",[16,265,266],{},"1.9 billion",", it's in the 2030s. These mental anchors help you quickly spot a timestamp that's off by a factor of 1000 (seconds vs. milliseconds).",[269,270,272],"h3",{"id":271},"the-year-2038-problem","The Year 2038 Problem",[12,274,275,276,279,280,283],{},"A quick note for the curious: 32-bit Unix timestamps will overflow on ",[21,277,278],{},"January 19, 2038, at 03:14:07 UTC"," (timestamp ",[16,281,282],{},"2147483647","). After that, 32-bit signed integers wrap around to negative values. This is the \"Year 2038 problem\" — similar in concept to Y2K. Most modern systems use 64-bit timestamps, which won't overflow for hundreds of billions of years.",[29,285,287],{"id":286},"how-to-convert-a-timestamp","How to Convert a Timestamp",[12,289,290],{},[21,291,292],{},"Timestamp → Human-readable date:",[12,294,295],{},"In JavaScript:",[297,298,303],"pre",{"className":299,"code":300,"language":301,"meta":302,"style":302},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","new Date(1715760000 * 1000).toISOString()\n\u002F\u002F \"2025-05-15T08:00:00.000Z\"\n","js","",[16,304,305,342],{"__ignoreMap":302},[306,307,310,314,318,322,325,328,331,334,336,339],"span",{"class":308,"line":309},"line",1,[306,311,313],{"class":312},"sMK4o","new",[306,315,317],{"class":316},"s2Zo4"," Date",[306,319,321],{"class":320},"sTEyZ","(",[306,323,18],{"class":324},"sbssI",[306,326,327],{"class":312}," *",[306,329,330],{"class":324}," 1000",[306,332,333],{"class":320},")",[306,335,47],{"class":312},[306,337,338],{"class":316},"toISOString",[306,340,341],{"class":320},"()\n",[306,343,345],{"class":308,"line":344},2,[306,346,348],{"class":347},"sHwdD","\u002F\u002F \"2025-05-15T08:00:00.000Z\"\n",[12,350,351],{},"In Python:",[297,353,357],{"className":354,"code":355,"language":356,"meta":302,"style":302},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import datetime\ndatetime.datetime.utcfromtimestamp(1715760000)\n# datetime.datetime(2025, 5, 15, 8, 0)\n","python",[16,358,359,364,369],{"__ignoreMap":302},[306,360,361],{"class":308,"line":309},[306,362,363],{},"import datetime\n",[306,365,366],{"class":308,"line":344},[306,367,368],{},"datetime.datetime.utcfromtimestamp(1715760000)\n",[306,370,372],{"class":308,"line":371},3,[306,373,374],{},"# datetime.datetime(2025, 5, 15, 8, 0)\n",[12,376,377],{},[21,378,379],{},"Current date → Timestamp:",[12,381,295],{},[297,383,385],{"className":299,"code":384,"language":301,"meta":302,"style":302},"Math.floor(Date.now() \u002F 1000)  \u002F\u002F current Unix timestamp in seconds\n",[16,386,387],{"__ignoreMap":302},[306,388,389,392,394,397,400,402,405,408,411,413,416],{"class":308,"line":309},[306,390,391],{"class":320},"Math",[306,393,47],{"class":312},[306,395,396],{"class":316},"floor",[306,398,399],{"class":320},"(Date",[306,401,47],{"class":312},[306,403,404],{"class":316},"now",[306,406,407],{"class":320},"() ",[306,409,410],{"class":312},"\u002F",[306,412,330],{"class":324},[306,414,415],{"class":320},")  ",[306,417,418],{"class":347},"\u002F\u002F current Unix timestamp in seconds\n",[12,420,351],{},[297,422,424],{"className":354,"code":423,"language":356,"meta":302,"style":302},"import time\nint(time.time())  # current Unix timestamp in seconds\n",[16,425,426,431],{"__ignoreMap":302},[306,427,428],{"class":308,"line":309},[306,429,430],{},"import time\n",[306,432,433],{"class":308,"line":344},[306,434,435],{},"int(time.time())  # current Unix timestamp in seconds\n",[12,437,438],{},"These work fine in code, but when you just need a quick answer — or you're debugging and don't have a REPL open — an online converter is much faster.",[29,440,442],{"id":441},"when-an-online-tool-beats-writing-code","When an Online Tool Beats Writing Code",[76,444,445,448,451,454],{},[79,446,447],{},"You're reading a log file and need to decode a timestamp quickly",[79,449,450],{},"You want to check what timestamp corresponds to a specific date in the past or future",[79,452,453],{},"You're comparing timestamps across systems and need to verify they match",[79,455,456],{},"You're onboarding and need to explain timestamps to a non-technical teammate",[12,458,459,460,463],{},"An online converter handles seconds ",[55,461,462],{},"and"," milliseconds, shows you the result in multiple timezones, and requires zero setup.",[12,465,466],{},[467,468,470],"a",{"href":469},"\u002Ftools\u002Ftimestamp-converter",[21,471,472],{},"Try ujiffy Timestamp Converter →",[12,474,475],{},"Paste any Unix timestamp, get a readable date instantly — or pick a date and get its timestamp. No setup required.",[477,478,479],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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":302,"searchDepth":344,"depth":344,"links":481},[482,483,484,485,488,489],{"id":31,"depth":344,"text":32},{"id":67,"depth":344,"text":68},{"id":116,"depth":344,"text":117},{"id":172,"depth":344,"text":173,"children":486},[487],{"id":271,"depth":371,"text":272},{"id":286,"depth":344,"text":287},{"id":441,"depth":344,"text":442},"Confused by Unix timestamps? Learn what epoch time is, why developers use it, how to convert timestamps to readable dates, and find common timestamp values.",false,"mdx","en",{},true,"\u002Fblog\u002Funix-timestamp-converter-guide","2025-05-20","timestamp-converter",{"title":6,"description":490},"blog\u002Funix-timestamp-converter-guide",[502,38,503,504],"unix timestamp","timestamp converter","developer tools","TFzvosT4GBTQLsoWoBY7IMBph-QFVI_bdGeLbURkrq8",{"id":507,"title":508,"author":7,"body":509,"description":928,"draft":491,"extension":492,"lang":493,"meta":929,"navigation":495,"path":930,"pubDate":931,"relatedTool":932,"seo":933,"stem":934,"tags":935,"__hash__":939},"blog\u002Fblog\u002Fbase64-encoding-explained.mdx","Base64 Encoding Explained: What It Is and When to Use It",{"type":9,"value":510,"toc":914},[511,514,518,536,554,561,565,568,571,578,588,592,595,599,602,636,639,643,662,666,677,685,700,704,707,711,714,718,724,730,736,752,756,759,779,782,896,900,903,911],[12,512,513],{},"Base64 is one of those things that every developer encounters eventually, but many misunderstand. The most common misconception: that Base64 encoding is a form of security or encryption. It's not. At all. Let's clear that up — and then talk about what Base64 actually is, how it works, and when you genuinely need it.",[29,515,517],{"id":516},"what-is-base64","What Is Base64?",[12,519,520,521,524,525,528,529,531,532,535],{},"Base64 is an ",[21,522,523],{},"encoding scheme"," that converts binary data into a string of ASCII characters. The name comes from the fact that it uses 64 printable characters to represent the data: the 26 uppercase letters (A–Z), 26 lowercase letters (a–z), 10 digits (0–9), plus ",[16,526,527],{},"+"," and ",[16,530,410],{}," (with ",[16,533,534],{},"="," used for padding).",[12,537,538,539,542,543,546,547,550,551,553],{},"Here's the key point: ",[21,540,541],{},"encoding is not encryption",". When you Base64-encode something, you're not hiding it. Anyone who sees a Base64 string can instantly decode it — no key, no password. If you Base64-encode the text ",[16,544,545],{},"hello",", you get ",[16,548,549],{},"aGVsbG8=",". Run that through a decoder and you get ",[16,552,545],{}," right back.",[12,555,556,557,560],{},"Base64 exists for a completely different reason: ",[21,558,559],{},"compatibility",". Some systems — email protocols, URLs, HTML attributes, certain APIs — were designed to handle text, not arbitrary binary data. Base64 is a way to take binary data (like an image or a file) and represent it using only safe, printable ASCII characters so it can travel through these text-based systems without getting corrupted.",[29,562,564],{"id":563},"how-base64-works-the-short-version","How Base64 Works (The Short Version)",[12,566,567],{},"Binary data is a stream of bytes — each byte is 8 bits. Base64 works by taking 3 bytes (24 bits) at a time and splitting them into 4 groups of 6 bits each. Each 6-bit group maps to one of the 64 characters in the Base64 alphabet.",[12,569,570],{},"Why 6 bits? Because 2⁶ = 64, which is exactly the number of characters in the encoding alphabet.",[12,572,573,574,577],{},"The result: every 3 bytes of input become 4 characters of Base64 output. This means Base64-encoded data is about ",[21,575,576],{},"33% larger"," than the original. That's the trade-off — broader compatibility at the cost of size.",[12,579,580,581,583,584,587],{},"If the input isn't a multiple of 3 bytes, padding characters (",[16,582,534],{}," or ",[16,585,586],{},"==",") are added to the end to make the output length a multiple of 4.",[29,589,591],{"id":590},"when-do-developers-actually-use-base64","When Do Developers Actually Use Base64?",[12,593,594],{},"Base64 shows up in a surprising number of places in everyday web development:",[269,596,598],{"id":597},"data-urls-inline-images","Data URLs (Inline Images)",[12,600,601],{},"When you embed an image directly into HTML or CSS without a separate file, you use a Data URL. The image's binary content is Base64-encoded and placed inline:",[297,603,607],{"className":604,"code":605,"language":606,"meta":302,"style":302},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cimg src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANS...\" \u002F>\n","html",[16,608,609],{"__ignoreMap":302},[306,610,611,614,618,622,624,627,631,633],{"class":308,"line":309},[306,612,613],{"class":312},"\u003C",[306,615,617],{"class":616},"swJcz","img",[306,619,621],{"class":620},"spNyl"," src",[306,623,534],{"class":312},[306,625,626],{"class":312},"\"",[306,628,630],{"class":629},"sfazB","data:image\u002Fpng;base64,iVBORw0KGgoAAAANS...",[306,632,626],{"class":312},[306,634,635],{"class":312}," \u002F>\n",[12,637,638],{},"This technique is useful for small icons or images you want to bundle into a single file, eliminating an extra HTTP request.",[269,640,642],{"id":641},"jwt-json-web-tokens","JWT (JSON Web Tokens)",[12,644,645,646,648,649,528,652,648,654,657,658,661],{},"JWTs use Base64URL encoding (a URL-safe variant of Base64, replacing ",[16,647,527],{}," with ",[16,650,651],{},"-",[16,653,410],{},[16,655,656],{},"_","). The header and payload sections of a JWT are Base64URL-encoded JSON objects — which is why you can paste a JWT into a decoder and read the claims directly. ",[21,659,660],{},"This is not encrypted."," The signature section verifies integrity, but the payload is readable by anyone.",[269,663,665],{"id":664},"http-basic-authentication","HTTP Basic Authentication",[12,667,668,669,672,673,676],{},"When a browser or API client sends Basic Auth credentials, the ",[16,670,671],{},"username:password"," string is Base64-encoded and included in the ",[16,674,675],{},"Authorization"," header:",[297,678,683],{"className":679,"code":681,"language":682},[680],"language-text","Authorization: Basic dXNlcjpwYXNzd29yZA==\n","text",[16,684,681],{"__ignoreMap":302},[12,686,687,688,691,692,695,696,699],{},"Decoding ",[16,689,690],{},"dXNlcjpwYXNzd29yZA=="," gives you ",[16,693,694],{},"user:password",". This is why ",[21,697,698],{},"Basic Auth must always be used over HTTPS"," — the credentials are trivially reversible.",[269,701,703],{"id":702},"email-attachments-mime","Email Attachments (MIME)",[12,705,706],{},"The MIME standard, which governs how email handles attachments, uses Base64 to encode binary files. When you receive an email with a PDF attachment, that PDF is Base64-encoded in the raw email source. Email servers, which were originally designed for plain text, can then safely transport it.",[269,708,710],{"id":709},"storing-binary-data-in-json-or-xml","Storing Binary Data in JSON or XML",[12,712,713],{},"JSON doesn't have a native binary type. When an API needs to include binary data (like a thumbnail or a cryptographic key) in a JSON response, Base64 encoding is the standard approach.",[29,715,717],{"id":716},"common-misconceptions","Common Misconceptions",[12,719,720,723],{},[21,721,722],{},"\"Base64 is encryption\"","\nNo. It is trivially reversible. Never use Base64 to \"protect\" sensitive data. Use proper encryption (AES, RSA, etc.) for that.",[12,725,726,729],{},[21,727,728],{},"\"Base64 compresses data\"","\nThe opposite is true. Base64 makes data larger by ~33%. It's a size trade-off you accept in exchange for compatibility.",[12,731,732,735],{},[21,733,734],{},"\"I should Base64-encode passwords before storing them\"","\nAbsolutely not. Passwords should be hashed with a proper algorithm like bcrypt, Argon2, or scrypt. Base64 provides zero security.",[12,737,738,741,742,648,744,746,747,648,749,751],{},[21,739,740],{},"\"Base64URL and Base64 are the same thing\"","\nClose but not identical. Base64URL replaces ",[16,743,527],{},[16,745,651],{},", ",[16,748,410],{},[16,750,656],{},", and omits padding. This makes it safe to use in URLs and filenames without percent-encoding.",[29,753,755],{"id":754},"how-to-encode-and-decode-base64-online","How to Encode and Decode Base64 Online",[12,757,758],{},"You don't need to write code to Base64-encode or decode something. ujiffy's free Base64 tool lets you:",[76,760,761,767,773,776],{},[79,762,763,766],{},[21,764,765],{},"Encode"," any text or binary input to Base64",[79,768,769,772],{},[21,770,771],{},"Decode"," any Base64 string back to its original form",[79,774,775],{},"Works entirely in your browser — nothing is sent to a server",[79,777,778],{},"Supports both standard Base64 and Base64URL",[12,780,781],{},"Quick reference for developers who need it in code:",[297,783,785],{"className":299,"code":784,"language":301,"meta":302,"style":302},"\u002F\u002F JavaScript\nbtoa(\"hello\")          \u002F\u002F encode → \"aGVsbG8=\"\natob(\"aGVsbG8=\")       \u002F\u002F decode → \"hello\"\n\n\u002F\u002F Python\nimport base64\nbase64.b64encode(b\"hello\")        # → b'aGVsbG8='\nbase64.b64decode(\"aGVsbG8=\")     # → b'hello'\n",[16,786,787,792,811,830,836,842,852,875],{"__ignoreMap":302},[306,788,789],{"class":308,"line":309},[306,790,791],{"class":347},"\u002F\u002F JavaScript\n",[306,793,794,797,799,801,803,805,808],{"class":308,"line":344},[306,795,796],{"class":316},"btoa",[306,798,321],{"class":320},[306,800,626],{"class":312},[306,802,545],{"class":629},[306,804,626],{"class":312},[306,806,807],{"class":320},")          ",[306,809,810],{"class":347},"\u002F\u002F encode → \"aGVsbG8=\"\n",[306,812,813,816,818,820,822,824,827],{"class":308,"line":371},[306,814,815],{"class":316},"atob",[306,817,321],{"class":320},[306,819,626],{"class":312},[306,821,549],{"class":629},[306,823,626],{"class":312},[306,825,826],{"class":320},")       ",[306,828,829],{"class":347},"\u002F\u002F decode → \"hello\"\n",[306,831,833],{"class":308,"line":832},4,[306,834,835],{"emptyLinePlaceholder":495},"\n",[306,837,839],{"class":308,"line":838},5,[306,840,841],{"class":347},"\u002F\u002F Python\n",[306,843,845,849],{"class":308,"line":844},6,[306,846,848],{"class":847},"s7zQu","import",[306,850,851],{"class":320}," base64\n",[306,853,855,858,860,862,864,867,870,872],{"class":308,"line":854},7,[306,856,857],{"class":320},"base64.b64encode(b",[306,859,626],{"class":312},[306,861,545],{"class":629},[306,863,626],{"class":312},[306,865,866],{"class":320},")        # → b",[306,868,869],{"class":312},"'",[306,871,549],{"class":629},[306,873,874],{"class":312},"'\n",[306,876,878,881,883,885,887,890,892,894],{"class":308,"line":877},8,[306,879,880],{"class":320},"base64.b64decode(",[306,882,626],{"class":312},[306,884,549],{"class":629},[306,886,626],{"class":312},[306,888,889],{"class":320},")     # → b",[306,891,869],{"class":312},[306,893,545],{"class":629},[306,895,874],{"class":312},[29,897,899],{"id":898},"final-thoughts","Final Thoughts",[12,901,902],{},"Base64 is a workhorse encoding that quietly powers a huge chunk of the modern web — from inline images to auth headers to JWTs. Understanding what it is (and what it isn't) helps you use it correctly and avoid the security mistake of treating it like encryption. It's a compatibility tool, not a security tool. Use it accordingly.",[12,904,905],{},[467,906,908],{"href":907},"\u002Ftools\u002Fbase64-encoder",[21,909,910],{},"Try ujiffy Base64 Encoder →",[477,912,913],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":302,"searchDepth":344,"depth":344,"links":915},[916,917,918,925,926,927],{"id":516,"depth":344,"text":517},{"id":563,"depth":344,"text":564},{"id":590,"depth":344,"text":591,"children":919},[920,921,922,923,924],{"id":597,"depth":371,"text":598},{"id":641,"depth":371,"text":642},{"id":664,"depth":371,"text":665},{"id":702,"depth":371,"text":703},{"id":709,"depth":371,"text":710},{"id":716,"depth":344,"text":717},{"id":754,"depth":344,"text":755},{"id":898,"depth":344,"text":899},"Base64 isn't encryption — learn what it actually does, why developers use it to encode images and API credentials, and how to encode\u002Fdecode online for free.",{},"\u002Fblog\u002Fbase64-encoding-explained","2025-05-18","base64-encoder",{"title":508,"description":928},"blog\u002Fbase64-encoding-explained",[936,937,504,938],"base64","encoding","web development","nLZeUyDMSWgRl3vXF2ihcGGLOvgEwAsng8w_lRJVEXw",{"id":941,"title":942,"author":7,"body":943,"description":1283,"draft":491,"extension":492,"lang":493,"meta":1284,"navigation":495,"path":1285,"pubDate":1286,"relatedTool":1287,"seo":1288,"stem":1289,"tags":1290,"__hash__":1293},"blog\u002Fblog\u002Fcompare-two-texts-online-diff-checker.mdx","How to Compare Two Texts Online with a Diff Checker",{"type":9,"value":944,"toc":1274},[945,952,955,959,970,977,981,984,990,1000,1006,1012,1018,1022,1025,1055,1069,1075,1081,1087,1090,1175,1178,1182,1188,1194,1205,1219,1225,1229,1232,1260,1263,1271],[12,946,947,948,951],{},"Ever stared at two versions of a config file wondering what changed? Or tried to manually spot the difference between two code snippets line by line? That's painful — and completely avoidable. A ",[21,949,950],{},"diff checker"," does this in seconds.",[12,953,954],{},"In this guide, you'll learn what a diff is, when to use one, and how to get the most out of an online diff tool.",[29,956,958],{"id":957},"what-is-a-diff","What Is a Diff?",[12,960,961,962,965,966,969],{},"\"Diff\" comes from the word ",[55,963,964],{},"difference",". In the context of text and code, a diff shows you ",[21,967,968],{},"exactly what changed"," between two versions of a document — which lines were added, which were removed, and which stayed the same.",[12,971,972,973,976],{},"The concept comes from the Unix ",[16,974,975],{},"diff"," command, which has been around since the 1970s. Today, diff is the engine behind Git's change tracking, GitHub's pull request view, and virtually every code review tool you've ever used.",[29,978,980],{"id":979},"when-would-you-use-a-diff-checker","When Would You Use a Diff Checker?",[12,982,983],{},"Diff tools are useful in more situations than you might think:",[12,985,986,989],{},[21,987,988],{},"Code Review","\nWhen reviewing a pull request or patch, you want to focus only on what changed — not re-read the entire file. A diff strips out the noise and highlights the signal.",[12,991,992,995,996,999],{},[21,993,994],{},"Config File Comparison","\nYou deployed to production, something broke, and now you're comparing ",[16,997,998],{},"nginx.conf"," from staging vs. production. A diff checker makes this instant.",[12,1001,1002,1005],{},[21,1003,1004],{},"Document Revision Tracking","\nWriters and editors use diffs to compare drafts — especially when collaborating without a version control system. Paste the old draft and the new one, and see every change at a glance.",[12,1007,1008,1011],{},[21,1009,1010],{},"Debugging Unexpected Changes","\nSometimes files get modified unexpectedly — by a build process, a script, or a teammate. Running a quick diff against a known-good version tells you exactly what shifted.",[12,1013,1014,1017],{},[21,1015,1016],{},"API Response Comparison","\nComparing JSON responses between two API versions? Paste both in and see what fields changed, what got added, and what disappeared.",[29,1019,1021],{"id":1020},"how-to-read-the-redgreen-highlights","How to Read the Red\u002FGreen Highlights",[12,1023,1024],{},"Most diff tools use a color convention that's intuitive once you know it:",[76,1026,1027,1038,1048],{},[79,1028,1029,1030,1033,1034,1037],{},"🟥 ",[21,1031,1032],{},"Red (or pink) lines"," — these were ",[21,1035,1036],{},"removed"," from the original text. They exist in the left\u002Fold version but not in the right\u002Fnew version.",[79,1039,1040,1041,1033,1044,1047],{},"🟩 ",[21,1042,1043],{},"Green lines",[21,1045,1046],{},"added"," in the new version. They don't exist in the old text.",[79,1049,1050,1051,1054],{},"⬜ ",[21,1052,1053],{},"Unchanged lines"," — shown in neutral color (white or gray) to provide context.",[12,1056,1057,1058,1061,1062,583,1065,1068],{},"Some diff tools also highlight ",[21,1059,1060],{},"inline changes"," within a line — so if you changed one word in a sentence, just that word is highlighted, not the whole line. This is called a ",[21,1063,1064],{},"character-level",[21,1066,1067],{},"word-level"," diff, and it's much more useful for prose and config files.",[29,1070,1072,1073],{"id":1071},"online-diff-checker-vs-command-line-diff","Online Diff Checker vs. Command-Line ",[16,1074,975],{},[12,1076,1077,1078,1080],{},"The classic Unix ",[16,1079,975],{}," command is powerful, but it has a learning curve and produces output that's hard to read at a glance:",[297,1082,1085],{"className":1083,"code":1084,"language":682},[680],"\u003C old line\n---\n> new line\n",[16,1086,1084],{"__ignoreMap":302},[12,1088,1089],{},"Here's a quick comparison:",[178,1091,1092,1107],{},[181,1093,1094],{},[184,1095,1096,1099,1102],{},[187,1097,1098],{},"Feature",[187,1100,1101],{},"Online Diff Tool",[187,1103,1104,1105],{},"Command-line ",[16,1106,975],{},[194,1108,1109,1120,1131,1142,1153,1164],{},[184,1110,1111,1114,1117],{},[199,1112,1113],{},"Visual clarity",[199,1115,1116],{},"✅ Color-coded, side-by-side",[199,1118,1119],{},"❌ Plain text symbols",[184,1121,1122,1125,1128],{},[199,1123,1124],{},"Setup required",[199,1126,1127],{},"❌ None",[199,1129,1130],{},"✅ Terminal access",[184,1132,1133,1136,1139],{},[199,1134,1135],{},"Inline highlighting",[199,1137,1138],{},"✅ Word\u002Fcharacter level",[199,1140,1141],{},"⚠️ Varies by flag",[184,1143,1144,1147,1150],{},[199,1145,1146],{},"Shareable results",[199,1148,1149],{},"✅ Often linkable",[199,1151,1152],{},"❌ Terminal only",[184,1154,1155,1158,1161],{},[199,1156,1157],{},"Works on any device",[199,1159,1160],{},"✅ Browser-based",[199,1162,1163],{},"❌ Needs CLI",[184,1165,1166,1169,1172],{},[199,1167,1168],{},"Best for",[199,1170,1171],{},"Quick checks, sharing",[199,1173,1174],{},"Scripts, automation",[12,1176,1177],{},"For quick comparisons — especially when sharing with a non-technical collaborator or reviewing on the fly — an online tool wins hands down.",[29,1179,1181],{"id":1180},"tips-for-getting-more-out-of-diff-tools","Tips for Getting More Out of Diff Tools",[12,1183,1184,1187],{},[21,1185,1186],{},"Normalize formatting first."," If one file uses tabs and another uses spaces, the diff will show nearly every line as changed. Run a formatter first (or use a diff tool with whitespace-ignore options).",[12,1189,1190,1193],{},[21,1191,1192],{},"Compare in the right order."," Convention is: old\u002Foriginal on the left, new\u002Fmodified on the right. Green = what was added to make the new version. Keeping this consistent prevents confusion.",[12,1195,1196,1199,1200,528,1202,1204],{},[21,1197,1198],{},"Use side-by-side view for prose, unified view for code."," Side-by-side makes it easy to read both versions in context. Unified view (a single pane with ",[16,1201,527],{},[16,1203,651],{}," lines) is more compact and familiar to developers.",[12,1206,1207,1210,1211,1214,1215,1218],{},[21,1208,1209],{},"Look at context lines."," Diff tools show a few unchanged lines around each change for context. Use this to understand ",[55,1212,1213],{},"where"," in the file the change is — not just ",[55,1216,1217],{},"what"," changed.",[12,1220,1221,1224],{},[21,1222,1223],{},"Copy only what changed."," If you're merging changes manually, diff tools help you know exactly which lines to copy over. This beats trying to reconcile two files by eye.",[29,1226,1228],{"id":1227},"a-common-workflow","A Common Workflow",[12,1230,1231],{},"Here's how developers typically use an online diff checker in practice:",[1233,1234,1235,1238,1245,1251,1254,1257],"ol",{},[79,1236,1237],{},"Open the diff tool",[79,1239,1240,1241,1244],{},"Paste the ",[21,1242,1243],{},"original"," text in the left panel",[79,1246,1240,1247,1250],{},[21,1248,1249],{},"modified"," text in the right panel",[79,1252,1253],{},"Click \"Compare\" (or it updates automatically)",[79,1255,1256],{},"Scan the highlighted lines — red for removed, green for added",[79,1258,1259],{},"Use the context lines to understand what each change means",[12,1261,1262],{},"That's it. No setup, no commands, no waiting.",[12,1264,1265],{},[467,1266,1268],{"href":1267},"\u002Ftools\u002Fdiff-checker",[21,1269,1270],{},"Try ujiffy Diff Checker →",[12,1272,1273],{},"Paste two texts, spot the differences instantly — free, no login required.",{"title":302,"searchDepth":344,"depth":344,"links":1275},[1276,1277,1278,1279,1281,1282],{"id":957,"depth":344,"text":958},{"id":979,"depth":344,"text":980},{"id":1020,"depth":344,"text":1021},{"id":1071,"depth":344,"text":1280},"Online Diff Checker vs. Command-Line diff",{"id":1180,"depth":344,"text":1181},{"id":1227,"depth":344,"text":1228},"Quickly spot differences between two code snippets, config files, or documents with a free online diff checker — no downloads, no login required.",{},"\u002Fblog\u002Fcompare-two-texts-online-diff-checker","2025-05-17","diff-checker",{"title":942,"description":1283},"blog\u002Fcompare-two-texts-online-diff-checker",[950,1291,504,1292],"text comparison","code review","uZZwfXHpvCQHkKqXcXRVIyX5UmJvtCZk6VXaEO7CEjk",{"id":1295,"title":1296,"author":7,"body":1297,"description":1900,"draft":491,"extension":492,"lang":493,"meta":1901,"navigation":495,"path":1902,"pubDate":1903,"relatedTool":1904,"seo":1905,"stem":1906,"tags":1907,"__hash__":1910},"blog\u002Fblog\u002Fregex-tester-guide-for-beginners.mdx","Regex Tester Guide for Beginners: Test Patterns Online",{"type":9,"value":1298,"toc":1883},[1299,1306,1309,1313,1324,1338,1341,1345,1348,1352,1453,1457,1519,1523,1565,1569,1605,1609,1613,1619,1624,1650,1663,1667,1673,1677,1711,1719,1723,1729,1733,1753,1763,1767,1770,1802,1805,1809,1865,1869,1872,1880],[12,1300,1301,1302,1305],{},"Regular expressions — or ",[21,1303,1304],{},"regex"," — are one of those tools that seem intimidating at first but become incredibly powerful once you get the hang of them. Whether you're validating form inputs, parsing log files, or searching through code, regex can save you hours of manual work.",[12,1307,1308],{},"In this guide, you'll learn the essentials: what regex is, the core syntax you need to know, and how to test your patterns online without installing anything.",[29,1310,1312],{"id":1311},"what-is-a-regular-expression","What Is a Regular Expression?",[12,1314,1315,1316,1319,1320,1323],{},"A regular expression is a sequence of characters that defines a ",[21,1317,1318],{},"search pattern",". Think of it as a super-powered \"Find\" function — instead of searching for a fixed word, you describe the ",[55,1321,1322],{},"shape"," of what you're looking for.",[12,1325,1326,1327,1330,1331,1334,1335,1337],{},"For example, instead of searching for ",[16,1328,1329],{},"\"2025-05-15\""," specifically, you could write a pattern that matches ",[55,1332,1333],{},"any"," date in ",[16,1336,156],{}," format. That's the power of regex.",[12,1339,1340],{},"Regex is supported in virtually every programming language — JavaScript, Python, Go, Java, Ruby — and in most code editors, terminal tools, and databases.",[29,1342,1344],{"id":1343},"quick-reference-core-regex-syntax","Quick Reference: Core Regex Syntax",[12,1346,1347],{},"Here's a cheat sheet of the most common regex building blocks:",[269,1349,1351],{"id":1350},"character-classes","Character Classes",[178,1353,1354,1364],{},[181,1355,1356],{},[184,1357,1358,1361],{},[187,1359,1360],{},"Pattern",[187,1362,1363],{},"Matches",[194,1365,1366,1375,1385,1395,1405,1424,1434],{},[184,1367,1368,1372],{},[199,1369,1370],{},[16,1371,47],{},[199,1373,1374],{},"Any single character (except newline)",[184,1376,1377,1382],{},[199,1378,1379],{},[16,1380,1381],{},"\\d",[199,1383,1384],{},"Any digit (0–9)",[184,1386,1387,1392],{},[199,1388,1389],{},[16,1390,1391],{},"\\w",[199,1393,1394],{},"Any word character (letters, digits, underscore)",[184,1396,1397,1402],{},[199,1398,1399],{},[16,1400,1401],{},"\\s",[199,1403,1404],{},"Any whitespace (space, tab, newline)",[184,1406,1407,1412],{},[199,1408,1409],{},[16,1410,1411],{},"[abc]",[199,1413,1414,1415,746,1417,1420,1421],{},"Exactly ",[16,1416,467],{},[16,1418,1419],{},"b",", or ",[16,1422,1423],{},"c",[184,1425,1426,1431],{},[199,1427,1428],{},[16,1429,1430],{},"[a-z]",[199,1432,1433],{},"Any lowercase letter",[184,1435,1436,1441],{},[199,1437,1438],{},[16,1439,1440],{},"[^abc]",[199,1442,1443,1444,84,1447,746,1449,1420,1451],{},"Anything ",[55,1445,1446],{},"except",[16,1448,467],{},[16,1450,1419],{},[16,1452,1423],{},[269,1454,1456],{"id":1455},"quantifiers","Quantifiers",[178,1458,1459,1468],{},[181,1460,1461],{},[184,1462,1463,1465],{},[187,1464,1360],{},[187,1466,1467],{},"Meaning",[194,1469,1470,1480,1489,1499,1509],{},[184,1471,1472,1477],{},[199,1473,1474],{},[16,1475,1476],{},"*",[199,1478,1479],{},"0 or more times",[184,1481,1482,1486],{},[199,1483,1484],{},[16,1485,527],{},[199,1487,1488],{},"1 or more times",[184,1490,1491,1496],{},[199,1492,1493],{},[16,1494,1495],{},"?",[199,1497,1498],{},"0 or 1 time (optional)",[184,1500,1501,1506],{},[199,1502,1503],{},[16,1504,1505],{},"{3}",[199,1507,1508],{},"Exactly 3 times",[184,1510,1511,1516],{},[199,1512,1513],{},[16,1514,1515],{},"{2,5}",[199,1517,1518],{},"Between 2 and 5 times",[269,1520,1522],{"id":1521},"anchors","Anchors",[178,1524,1525,1533],{},[181,1526,1527],{},[184,1528,1529,1531],{},[187,1530,1360],{},[187,1532,1467],{},[194,1534,1535,1545,1555],{},[184,1536,1537,1542],{},[199,1538,1539],{},[16,1540,1541],{},"^",[199,1543,1544],{},"Start of the string",[184,1546,1547,1552],{},[199,1548,1549],{},[16,1550,1551],{},"$",[199,1553,1554],{},"End of the string",[184,1556,1557,1562],{},[199,1558,1559],{},[16,1560,1561],{},"\\b",[199,1563,1564],{},"Word boundary",[269,1566,1568],{"id":1567},"groups-alternation","Groups & Alternation",[178,1570,1571,1579],{},[181,1572,1573],{},[184,1574,1575,1577],{},[187,1576,1360],{},[187,1578,1467],{},[194,1580,1581,1591],{},[184,1582,1583,1588],{},[199,1584,1585],{},[16,1586,1587],{},"(abc)",[199,1589,1590],{},"Capture group",[184,1592,1593,1598],{},[199,1594,1595],{},[16,1596,1597],{},"a|b",[199,1599,1600,1601,583,1603],{},"Match ",[16,1602,467],{},[16,1604,1419],{},[29,1606,1608],{"id":1607},"_3-practical-regex-examples","3 Practical Regex Examples",[269,1610,1612],{"id":1611},"_1-email-address-validation","1. Email Address Validation",[297,1614,1617],{"className":1615,"code":1616,"language":682},[680],"^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$\n",[16,1618,1616],{"__ignoreMap":302},[12,1620,1621],{},[21,1622,1623],{},"How it works:",[76,1625,1626,1632,1638,1644],{},[79,1627,1628,1631],{},[16,1629,1630],{},"^[\\w.-]+"," — starts with one or more word characters, dots, or hyphens (the local part)",[79,1633,1634,1637],{},[16,1635,1636],{},"@"," — literal at-sign",[79,1639,1640,1643],{},[16,1641,1642],{},"[\\w.-]+"," — domain name",[79,1645,1646,1649],{},[16,1647,1648],{},"\\.[a-zA-Z]{2,}$"," — a dot followed by a TLD of at least 2 letters",[12,1651,1652,1653,1656,1657,583,1660,47],{},"This matches ",[16,1654,1655],{},"user@example.com"," but rejects ",[16,1658,1659],{},"@missinglocal.com",[16,1661,1662],{},"nodomain",[269,1664,1666],{"id":1665},"_2-url-detection","2. URL Detection",[297,1668,1671],{"className":1669,"code":1670,"language":682},[680],"https?:\\\u002F\\\u002F[\\w.-]+(\\\u002F[\\w.\u002F?=%&-]*)?\n",[16,1672,1670],{"__ignoreMap":302},[12,1674,1675],{},[21,1676,1623],{},[76,1678,1679,1691,1700,1705],{},[79,1680,1681,1684,1685,528,1688],{},[16,1682,1683],{},"https?"," — matches both ",[16,1686,1687],{},"http",[16,1689,1690],{},"https",[79,1692,1693,1696,1697],{},[16,1694,1695],{},":\\\u002F\\\u002F"," — literal ",[16,1698,1699],{},":\u002F\u002F",[79,1701,1702,1704],{},[16,1703,1642],{}," — the domain",[79,1706,1707,1710],{},[16,1708,1709],{},"(\\\u002F[\\w.\u002F?=%&-]*)?"," — optional path and query string",[12,1712,1652,1713,528,1716,47],{},[16,1714,1715],{},"https:\u002F\u002Fujiffy.dev\u002Ftools\u002Fregex-tester",[16,1717,1718],{},"http:\u002F\u002Fexample.com",[269,1720,1722],{"id":1721},"_3-date-format-yyyy-mm-dd","3. Date Format (YYYY-MM-DD)",[297,1724,1727],{"className":1725,"code":1726,"language":682},[680],"^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$\n",[16,1728,1726],{"__ignoreMap":302},[12,1730,1731],{},[21,1732,1623],{},[76,1734,1735,1741,1747],{},[79,1736,1737,1740],{},[16,1738,1739],{},"\\d{4}"," — exactly 4 digits for the year",[79,1742,1743,1746],{},[16,1744,1745],{},"(0[1-9]|1[0-2])"," — month 01–12",[79,1748,1749,1752],{},[16,1750,1751],{},"(0[1-9]|[12]\\d|3[01])"," — day 01–31",[12,1754,1755,1756,1759,1760,47],{},"This rejects invalid months like ",[16,1757,1758],{},"13"," and days like ",[16,1761,1762],{},"00",[29,1764,1766],{"id":1765},"why-use-an-online-regex-tester","Why Use an Online Regex Tester?",[12,1768,1769],{},"Writing regex in your code editor and then running the whole program just to test a pattern is slow and frustrating. An online regex tester lets you:",[76,1771,1772,1778,1784,1790,1796],{},[79,1773,1774,1777],{},[21,1775,1776],{},"See matches highlighted in real-time"," as you type your pattern",[79,1779,1780,1783],{},[21,1781,1782],{},"Iterate fast"," — tweak a character, see the result immediately",[79,1785,1786,1789],{},[21,1787,1788],{},"Test edge cases"," by pasting sample data directly into the tool",[79,1791,1792,1795],{},[21,1793,1794],{},"View capture groups"," to understand what each part of your pattern extracts",[79,1797,1798,1801],{},[21,1799,1800],{},"Work without setup"," — no IDE, no language runtime, no install",[12,1803,1804],{},"This is especially helpful when you're learning. Instead of guessing why your pattern doesn't work, you can visually debug it step by step.",[29,1806,1808],{"id":1807},"tips-for-writing-better-regex","Tips for Writing Better Regex",[76,1810,1811,1817,1834,1855],{},[79,1812,1813,1816],{},[21,1814,1815],{},"Start simple and build up."," Don't write the full pattern at once — match one part, verify it, then extend.",[79,1818,1819,84,1822,1825,1826,1829,1830,1833],{},[21,1820,1821],{},"Use anchors when you mean to match the whole string.",[16,1823,1824],{},"\\d+"," matches digits anywhere; ",[16,1827,1828],{},"^\\d+$"," only matches strings that are ",[55,1831,1832],{},"entirely"," digits.",[79,1835,1836,1839,1840,746,1842,746,1844,746,1846,746,1848,1850,1851,1854],{},[21,1837,1838],{},"Escape special characters."," Characters like ",[16,1841,47],{},[16,1843,1476],{},[16,1845,527],{},[16,1847,321],{},[16,1849,333],{}," have special meanings. Use a backslash to match them literally: ",[16,1852,1853],{},"\\."," matches a real dot.",[79,1856,1857,1860,1861,1864],{},[21,1858,1859],{},"Use groups for extraction."," Wrapping part of your pattern in ",[16,1862,1863],{},"()"," lets you extract that piece separately — useful for pulling out domain names, area codes, etc.",[29,1866,1868],{"id":1867},"start-testing-your-patterns-now","Start Testing Your Patterns Now",[12,1870,1871],{},"The best way to learn regex is to experiment. Don't memorize everything — just understand the concepts and look up the syntax as needed. An online tester makes this painless.",[12,1873,1874],{},[467,1875,1877],{"href":1876},"\u002Ftools\u002Fregex-tester",[21,1878,1879],{},"Try ujiffy Regex Tester →",[12,1881,1882],{},"Paste in your test string, write your pattern, and watch the matches light up. No sign-up, no installation — just results.",{"title":302,"searchDepth":344,"depth":344,"links":1884},[1885,1886,1892,1897,1898,1899],{"id":1311,"depth":344,"text":1312},{"id":1343,"depth":344,"text":1344,"children":1887},[1888,1889,1890,1891],{"id":1350,"depth":371,"text":1351},{"id":1455,"depth":371,"text":1456},{"id":1521,"depth":371,"text":1522},{"id":1567,"depth":371,"text":1568},{"id":1607,"depth":344,"text":1608,"children":1893},[1894,1895,1896],{"id":1611,"depth":371,"text":1612},{"id":1665,"depth":371,"text":1666},{"id":1721,"depth":371,"text":1722},{"id":1765,"depth":344,"text":1766},{"id":1807,"depth":344,"text":1808},{"id":1867,"depth":344,"text":1868},"New to regular expressions? Learn the essential regex syntax, common patterns for emails, URLs, and phone numbers, and how to test them online — instantly.",{},"\u002Fblog\u002Fregex-tester-guide-for-beginners","2025-05-15","regex-tester",{"title":1296,"description":1900},"blog\u002Fregex-tester-guide-for-beginners",[1304,1908,504,1909],"regular expressions","beginners","EV-ipGGBnNTNcAfwaHpXRjzzmNsvBnY9EC1pz7kz9mQ",{"id":1912,"title":1913,"author":7,"body":1914,"description":2283,"draft":491,"extension":492,"lang":493,"meta":2284,"navigation":495,"path":2285,"pubDate":1903,"relatedTool":2286,"seo":2287,"stem":2288,"tags":2289,"__hash__":2292},"blog\u002Fblog\u002Fwhat-is-uuid-and-how-to-generate.mdx","What Is a UUID and How to Generate One Online",{"type":9,"value":1915,"toc":2271},[1916,1923,1927,1940,1943,1953,1957,1960,2040,2044,2051,2055,2061,2065,2068,2072,2075,2081,2087,2093,2099,2105,2109,2112,2132,2139,2143,2146,2172,2175,2178,2252,2255,2257,2260,2268],[12,1917,1918,1919,1922],{},"If you've spent any time working with databases, APIs, or distributed systems, you've almost certainly encountered UUIDs. They look like this: ",[16,1920,1921],{},"550e8400-e29b-41d4-a716-446655440000",". Seemingly random, oddly specific in format, and absolutely everywhere. But what exactly are they, why are they useful, and which version should you use? Let's break it down.",[29,1924,1926],{"id":1925},"what-is-a-uuid","What Is a UUID?",[12,1928,1929,1932,1933,1936,1937,47],{},[21,1930,1931],{},"UUID"," stands for ",[21,1934,1935],{},"Universally Unique Identifier",". It's a 128-bit label used to uniquely identify information in computer systems. The format is always the same: 32 hexadecimal characters split into five groups by hyphens — ",[16,1938,1939],{},"8-4-4-4-12",[12,1941,1942],{},"The \"universally unique\" part is the key selling point. UUIDs are designed so that any two independently generated UUIDs will almost certainly be different — even if generated on different machines at the same time, without any coordination between them. This makes them extremely useful in distributed systems where you can't rely on a central authority to assign sequential IDs.",[12,1944,1945,1946,1952],{},"UUIDs are standardized by ",[467,1947,1951],{"href":1948,"rel":1949},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc4122",[1950],"nofollow","RFC 4122"," and are widely supported across virtually every programming language and database system.",[29,1954,1956],{"id":1955},"uuid-versions-explained","UUID Versions Explained",[12,1958,1959],{},"There are several UUID versions, each generated differently and suited to different use cases. The three most commonly used are v1, v4, and v5.",[178,1961,1962,1981],{},[181,1963,1964],{},[184,1965,1966,1969,1972,1975,1978],{},[187,1967,1968],{},"Version",[187,1970,1971],{},"Generation Method",[187,1973,1974],{},"Uniqueness Source",[187,1976,1977],{},"Predictable?",[187,1979,1980],{},"Common Use Case",[194,1982,1983,2002,2021],{},[184,1984,1985,1990,1993,1996,1999],{},[199,1986,1987],{},[21,1988,1989],{},"v1",[199,1991,1992],{},"Timestamp + MAC address",[199,1994,1995],{},"Time + hardware",[199,1997,1998],{},"Partially",[199,2000,2001],{},"Event logging, audit trails",[184,2003,2004,2009,2012,2015,2018],{},[199,2005,2006],{},[21,2007,2008],{},"v4",[199,2010,2011],{},"Random",[199,2013,2014],{},"Pure randomness",[199,2016,2017],{},"No",[199,2019,2020],{},"General purpose, databases",[184,2022,2023,2028,2031,2034,2037],{},[199,2024,2025],{},[21,2026,2027],{},"v5",[199,2029,2030],{},"Namespace + name (SHA-1)",[199,2032,2033],{},"Deterministic",[199,2035,2036],{},"Yes (same input → same UUID)",[199,2038,2039],{},"Consistent IDs for known resources",[269,2041,2043],{"id":2042},"uuid-v1-timestamp-based","UUID v1 — Timestamp-Based",[12,2045,2046,2047,2050],{},"v1 UUIDs encode the current timestamp and the MAC address of the machine generating them. They're time-ordered, which can be useful for sorting. However, they ",[21,2048,2049],{},"leak information"," — if you inspect a v1 UUID, you can extract when and where (roughly) it was created. For privacy-sensitive applications, this is a concern.",[269,2052,2054],{"id":2053},"uuid-v4-random","UUID v4 — Random",[12,2056,2057,2058],{},"v4 is the most widely used version today. It's generated from 122 bits of randomness (the other 6 bits encode the version and variant). There's no timestamp, no machine info — just random data. The probability of two v4 UUIDs colliding is so astronomically low it's effectively impossible in practice. ",[21,2059,2060],{},"When in doubt, use v4.",[269,2062,2064],{"id":2063},"uuid-v5-name-based-sha-1","UUID v5 — Name-Based (SHA-1)",[12,2066,2067],{},"v5 generates a UUID from a namespace UUID and a name string, using SHA-1 hashing. The same namespace + name always produces the same UUID. This is useful when you want a consistent, reproducible identifier for a known resource — for example, always generating the same UUID for a given URL or user email. Note: v3 does the same thing but with MD5 (less preferred today).",[29,2069,2071],{"id":2070},"common-use-cases-for-uuids","Common Use Cases for UUIDs",[12,2073,2074],{},"UUIDs are versatile. Here's where developers reach for them most often:",[12,2076,2077,2080],{},[21,2078,2079],{},"Database primary keys","\nInstead of auto-incrementing integers, many applications use UUID primary keys. The advantage: records can be created across multiple servers or clients without ID collisions, and the IDs don't expose how many records exist in your database.",[12,2082,2083,2086],{},[21,2084,2085],{},"File naming and storage","\nWhen uploading user files to object storage (S3, R2, etc.), using a UUID as the filename prevents conflicts and avoids exposing the original filename to the storage layer.",[12,2088,2089,2092],{},[21,2090,2091],{},"Session IDs and tokens","\nUUIDs make great session identifiers — long enough to be unguessable, short enough to be practical. Most web frameworks will generate UUID-based session tokens out of the box.",[12,2094,2095,2098],{},[21,2096,2097],{},"Distributed event tracking","\nIn event-driven or microservice architectures, UUIDs are used as correlation IDs to trace a request across multiple services in logs and monitoring systems.",[12,2100,2101,2104],{},[21,2102,2103],{},"Client-side ID generation","\nIn offline-first apps or mobile clients, records can be created on the device with a UUID before syncing to the server. No round-trip to the server needed just to get an ID.",[29,2106,2108],{"id":2107},"uuid-v4-vs-v1-vs-v5-which-should-you-use","UUID v4 vs v1 vs v5 — Which Should You Use?",[12,2110,2111],{},"The short answer for most use cases:",[76,2113,2114,2120,2126],{},[79,2115,2116,2119],{},[21,2117,2118],{},"Use v4"," if you just need a unique, opaque ID and don't need it to be reproducible.",[79,2121,2122,2125],{},[21,2123,2124],{},"Use v1"," if you need time-sortable IDs and privacy is not a concern.",[79,2127,2128,2131],{},[21,2129,2130],{},"Use v5"," if you need to derive a consistent ID from a known name or resource.",[12,2133,2134,2135,2138],{},"For new projects, ",[21,2136,2137],{},"v4 is the safe default"," unless you have a specific reason to choose otherwise.",[29,2140,2142],{"id":2141},"how-to-generate-a-uuid-online","How to Generate a UUID Online",[12,2144,2145],{},"If you need a UUID for testing, development, or configuration, you don't need to write any code. ujiffy's free UUID generator lets you:",[76,2147,2148,2155,2162,2165],{},[79,2149,2150,2151,2154],{},"Generate ",[21,2152,2153],{},"one or multiple UUIDs"," at once",[79,2156,2157,2158,2161],{},"Choose between ",[21,2159,2160],{},"v1, v4, and v5"," versions",[79,2163,2164],{},"Copy results to clipboard instantly",[79,2166,2167,2168,2171],{},"Everything runs ",[21,2169,2170],{},"in your browser"," — no server involved",[12,2173,2174],{},"No sign-up, no rate limits, no tracking.",[12,2176,2177],{},"For developers who need UUIDs in code, here are quick snippets:",[297,2179,2181],{"className":299,"code":2180,"language":301,"meta":302,"style":302},"\u002F\u002F JavaScript (browser or Node 14.17+)\ncrypto.randomUUID() \u002F\u002F generates a v4 UUID\n\n\u002F\u002F Python\nimport uuid\nstr(uuid.uuid4())\n\n\u002F\u002F Go\nimport \"github.com\u002Fgoogle\u002Fuuid\"\nuuid.New().String()\n",[16,2182,2183,2188,2203,2207,2211,2218,2223,2227,2232,2246],{"__ignoreMap":302},[306,2184,2185],{"class":308,"line":309},[306,2186,2187],{"class":347},"\u002F\u002F JavaScript (browser or Node 14.17+)\n",[306,2189,2190,2193,2195,2198,2200],{"class":308,"line":344},[306,2191,2192],{"class":320},"crypto",[306,2194,47],{"class":312},[306,2196,2197],{"class":316},"randomUUID",[306,2199,407],{"class":320},[306,2201,2202],{"class":347},"\u002F\u002F generates a v4 UUID\n",[306,2204,2205],{"class":308,"line":371},[306,2206,835],{"emptyLinePlaceholder":495},[306,2208,2209],{"class":308,"line":832},[306,2210,841],{"class":347},[306,2212,2213,2215],{"class":308,"line":838},[306,2214,848],{"class":847},[306,2216,2217],{"class":320}," uuid\n",[306,2219,2220],{"class":308,"line":844},[306,2221,2222],{"class":320},"str(uuid.uuid4())\n",[306,2224,2225],{"class":308,"line":854},[306,2226,835],{"emptyLinePlaceholder":495},[306,2228,2229],{"class":308,"line":877},[306,2230,2231],{"class":347},"\u002F\u002F Go\n",[306,2233,2235,2238,2240,2243],{"class":308,"line":2234},9,[306,2236,2237],{"class":320},"import ",[306,2239,626],{"class":312},[306,2241,2242],{"class":629},"github.com\u002Fgoogle\u002Fuuid",[306,2244,2245],{"class":312},"\"\n",[306,2247,2249],{"class":308,"line":2248},10,[306,2250,2251],{"class":320},"uuid.New().String()\n",[12,2253,2254],{},"But if you just need one right now — the generator is faster.",[29,2256,899],{"id":898},[12,2258,2259],{},"UUIDs are a simple but powerful primitive in software development. They solve the \"how do I generate a unique ID without coordination?\" problem elegantly. For most applications, v4 is all you need. If you're building something more specific — time-ordered logs, or deterministic IDs for known resources — v1 or v5 have you covered.",[12,2261,2262],{},[467,2263,2265],{"href":2264},"\u002Ftools\u002Fuuid-generator",[21,2266,2267],{},"Try ujiffy UUID Generator →",[477,2269,2270],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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":302,"searchDepth":344,"depth":344,"links":2272},[2273,2274,2279,2280,2281,2282],{"id":1925,"depth":344,"text":1926},{"id":1955,"depth":344,"text":1956,"children":2275},[2276,2277,2278],{"id":2042,"depth":371,"text":2043},{"id":2053,"depth":371,"text":2054},{"id":2063,"depth":371,"text":2064},{"id":2070,"depth":344,"text":2071},{"id":2107,"depth":344,"text":2108},{"id":2141,"depth":344,"text":2142},{"id":898,"depth":344,"text":899},"Understand what UUIDs are, the difference between UUID v1, v4, and v5, and how to generate collision-free unique IDs instantly — free and browser-based.",{},"\u002Fblog\u002Fwhat-is-uuid-and-how-to-generate","uuid-generator",{"title":1913,"description":2283},"blog\u002Fwhat-is-uuid-and-how-to-generate",[1931,2290,504,2291],"unique ID","uuid generator","S70h0Ur16PQ4zvFE1LH945b3RVOj4oaHT8LSvSnVS-o",{"id":2294,"title":2295,"author":7,"body":2296,"description":2633,"draft":491,"extension":492,"lang":493,"meta":2634,"navigation":495,"path":2635,"pubDate":2636,"relatedTool":2637,"seo":2638,"stem":2639,"tags":2640,"__hash__":2644},"blog\u002Fblog\u002Fhow-to-create-strong-passwords.mdx","How to Create Strong Passwords (And Why It Matters)",{"type":9,"value":2297,"toc":2620},[2298,2308,2312,2329,2332,2352,2355,2359,2362,2366,2373,2377,2380,2398,2401,2405,2416,2420,2423,2427,2430,2436,2454,2483,2492,2506,2510,2513,2516,2544,2547,2550,2554,2557,2600,2603,2605,2612],[12,2299,2300,2301,746,2304,2307],{},"Passwords are the first line of defense between your accounts and the people who want to get into them. Yet most people still use passwords like ",[16,2302,2303],{},"123456",[16,2305,2306],{},"iloveyou",", or their dog's name followed by an exclamation mark. It's 2025, and data breaches are more common than ever — so let's talk about what actually makes a password strong, what mistakes to avoid, and how to generate a secure one in seconds.",[29,2309,2311],{"id":2310},"why-weak-passwords-are-dangerous","Why Weak Passwords Are Dangerous",[12,2313,2314,2315,746,2317,2320,2321,2324,2325,2328],{},"Every year, security researchers publish lists of the most commonly used passwords. Year after year, ",[16,2316,2303],{},[16,2318,2319],{},"password",", and ",[16,2322,2323],{},"qwerty"," top the charts. These passwords can be cracked in ",[21,2326,2327],{},"under a second"," using automated tools.",[12,2330,2331],{},"Attackers use several techniques to break into accounts:",[76,2333,2334,2340,2346],{},[79,2335,2336,2339],{},[21,2337,2338],{},"Brute force attacks"," — try every possible combination until one works.",[79,2341,2342,2345],{},[21,2343,2344],{},"Dictionary attacks"," — use lists of common words, names, and known passwords.",[79,2347,2348,2351],{},[21,2349,2350],{},"Credential stuffing"," — take leaked username\u002Fpassword pairs from one breach and try them on other sites.",[12,2353,2354],{},"If your password is short, predictable, or reused across multiple services, you're not just vulnerable — you're an easy target. A single compromised account can cascade into email, banking, and social media breaches.",[29,2356,2358],{"id":2357},"what-makes-a-password-truly-strong","What Makes a Password Truly Strong?",[12,2360,2361],{},"A strong password isn't just \"hard to guess\" — it needs to be computationally difficult to crack even for machines running millions of attempts per second. Here's what matters:",[269,2363,2365],{"id":2364},"_1-length","1. Length",[12,2367,2368,2369,2372],{},"Length is the single most important factor. Every extra character multiplies the number of possible combinations exponentially. A 12-character password is astronomically harder to crack than an 8-character one. ",[21,2370,2371],{},"Aim for at least 16 characters"," for anything important.",[269,2374,2376],{"id":2375},"_2-character-variety","2. Character Variety",[12,2378,2379],{},"A strong password uses a mix of:",[76,2381,2382,2385,2388,2391],{},[79,2383,2384],{},"Uppercase letters (A–Z)",[79,2386,2387],{},"Lowercase letters (a–z)",[79,2389,2390],{},"Numbers (0–9)",[79,2392,2393,2394,2397],{},"Special characters (",[16,2395,2396],{},"!@#$%^&*"," etc.)",[12,2399,2400],{},"Mixing all four types dramatically increases the search space for attackers.",[269,2402,2404],{"id":2403},"_3-randomness","3. Randomness",[12,2406,2407,2408,2411,2412,2415],{},"The password shouldn't follow any pattern. ",[16,2409,2410],{},"P@ssw0rd"," looks complex, but it's on every cracker's list because it's a predictable substitution. True randomness — like ",[16,2413,2414],{},"t7!Kx#mQpL2$vR"," — is what you're after.",[269,2417,2419],{"id":2418},"_4-uniqueness","4. Uniqueness",[12,2421,2422],{},"Never reuse the same password across multiple accounts. If one site gets breached, attackers will try that password everywhere. Use a unique password for every login.",[29,2424,2426],{"id":2425},"common-password-mistakes-to-avoid","Common Password Mistakes to Avoid",[12,2428,2429],{},"Even people who think they're being clever often fall into the same traps:",[12,2431,2432,2435],{},[21,2433,2434],{},"Using personal information","\nBirthdays, names of partners, children, or pets, home addresses — all of these are easily discoverable from social media and are among the first things attackers try.",[12,2437,2438,2441,2442,746,2444,746,2447,1420,2450,2453],{},[21,2439,2440],{},"Keyboard walks","\nSequences like ",[16,2443,2323],{},[16,2445,2446],{},"asdfgh",[16,2448,2449],{},"zxcvbn",[16,2451,2452],{},"1qaz2wsx"," feel random when you type them, but they're extremely well-known patterns that appear in every attack dictionary.",[12,2455,2456,2459,2460,648,2462,746,2464,648,2467,1420,2470,648,2473,2476,2477,2479,2480,47],{},[21,2457,2458],{},"Simple substitutions","\nReplacing ",[16,2461,467],{},[16,2463,1636],{},[16,2465,2466],{},"o",[16,2468,2469],{},"0",[16,2471,2472],{},"e",[16,2474,2475],{},"3"," is a common trick that crackers account for automatically. ",[16,2478,2410],{}," is not safer than ",[16,2481,2482],{},"Password",[12,2484,2485,2488,2491],{},[21,2486,2487],{},"Adding numbers or symbols only at the end",[16,2489,2490],{},"Summer2024!"," is a real-world pattern that's immediately recognizable. Predictable structure defeats the purpose of complexity.",[12,2493,2494,2497,2498,2501,2502,2505],{},[21,2495,2496],{},"Reusing passwords with small changes","\nIf your go-to password is ",[16,2499,2500],{},"BlueSky42",", changing it to ",[16,2503,2504],{},"BlueSky43"," next year doesn't protect you. Attackers who crack one variation will try adjacent ones.",[29,2507,2509],{"id":2508},"how-to-generate-a-strong-password-instantly","How to Generate a Strong Password Instantly",[12,2511,2512],{},"The easiest way to get a strong, random password is to use a generator — not to come up with one yourself. Human brains are terrible at randomness; we gravitate toward patterns without realizing it.",[12,2514,2515],{},"ujiffy's free password generator lets you:",[76,2517,2518,2525,2532,2538],{},[79,2519,2520,2521,2524],{},"Set your desired ",[21,2522,2523],{},"password length"," (16+ characters recommended)",[79,2526,2527,2528,2531],{},"Choose which ",[21,2529,2530],{},"character types"," to include (uppercase, lowercase, numbers, symbols)",[79,2533,2534,2535],{},"Generate a new random password ",[21,2536,2537],{},"instantly in your browser",[79,2539,2540,2543],{},[21,2541,2542],{},"Copy it to clipboard"," with one click",[12,2545,2546],{},"No account needed. No data sent to a server. Everything runs locally in your browser.",[12,2548,2549],{},"Once you have your strong password, store it in a password manager (like Bitwarden, 1Password, or your browser's built-in manager). You should never need to memorize it — just make sure it's stored safely.",[29,2551,2553],{"id":2552},"quick-checklist-is-your-password-strong","Quick Checklist: Is Your Password Strong?",[12,2555,2556],{},"Before settling on a password, run through this:",[76,2558,2561,2570,2576,2582,2588,2594],{"className":2559},[2560],"contains-task-list",[79,2562,2565,2569],{"className":2563},[2564],"task-list-item",[2566,2567],"input",{"disabled":495,"type":2568},"checkbox"," At least 16 characters long",[79,2571,2573,2575],{"className":2572},[2564],[2566,2574],{"disabled":495,"type":2568}," Contains uppercase, lowercase, numbers, and symbols",[79,2577,2579,2581],{"className":2578},[2564],[2566,2580],{"disabled":495,"type":2568}," Doesn't include your name, birthday, or any personal info",[79,2583,2585,2587],{"className":2584},[2564],[2566,2586],{"disabled":495,"type":2568}," Not a dictionary word or common phrase",[79,2589,2591,2593],{"className":2590},[2564],[2566,2592],{"disabled":495,"type":2568}," Not reused from another account",[79,2595,2597,2599],{"className":2596},[2564],[2566,2598],{"disabled":495,"type":2568}," Generated randomly (not invented by you)",[12,2601,2602],{},"If you tick all six boxes, you're in good shape.",[29,2604,899],{"id":898},[12,2606,2607,2608,2611],{},"Creating a strong password doesn't have to be complicated. The key insight is this: ",[21,2609,2610],{},"don't try to invent one yourself",". Use a generator to get something truly random, and use a password manager to remember it for you. That combination — random generation + secure storage — is the gold standard for password hygiene in 2025.",[12,2613,2614],{},[467,2615,2617],{"href":2616},"\u002Ftools\u002Fpassword-generator",[21,2618,2619],{},"Try ujiffy Password Generator →",{"title":302,"searchDepth":344,"depth":344,"links":2621},[2622,2623,2629,2630,2631,2632],{"id":2310,"depth":344,"text":2311},{"id":2357,"depth":344,"text":2358,"children":2624},[2625,2626,2627,2628],{"id":2364,"depth":371,"text":2365},{"id":2375,"depth":371,"text":2376},{"id":2403,"depth":371,"text":2404},{"id":2418,"depth":371,"text":2419},{"id":2425,"depth":344,"text":2426},{"id":2508,"depth":344,"text":2509},{"id":2552,"depth":344,"text":2553},{"id":898,"depth":344,"text":899},"Learn what makes a password truly secure, common mistakes to avoid, and how to generate strong passwords instantly with ujiffy's free tool.",{},"\u002Fblog\u002Fhow-to-create-strong-passwords","2025-05-12","password-generator",{"title":2295,"description":2633},"blog\u002Fhow-to-create-strong-passwords",[2319,2641,2642,2643],"security","online tools","password generator","YyYki8ErZON6tagSWWyOXywE3dzqAOQaMfipW0NvSaw",{"id":2646,"title":2647,"author":7,"body":2648,"description":2818,"draft":491,"extension":492,"lang":493,"meta":2819,"navigation":495,"path":2820,"pubDate":2821,"relatedTool":2637,"seo":2822,"stem":2823,"tags":2824,"__hash__":2825},"blog\u002Fblog\u002Fgenerate-secure-passwords-online.mdx","How to Generate Secure Passwords Online",{"type":9,"value":2649,"toc":2811},[2650,2654,2657,2660,2664,2667,2673,2687,2696,2702,2706,2730,2734,2737,2763,2766,2770,2773,2799,2802,2805],[29,2651,2653],{"id":2652},"why-password-security-is-non-negotiable","Why Password Security Is Non-Negotiable",[12,2655,2656],{},"Data breaches happen every day. In 2024 alone, billions of credentials were exposed in leaks affecting services from social media platforms to financial institutions. The hard truth: if you reuse a weak password, a single breach can cascade into a full account takeover across every service you use.",[12,2658,2659],{},"Strong, unique passwords are the first — and often most effective — line of defense.",[29,2661,2663],{"id":2662},"what-makes-a-password-strong","What Makes a Password \"Strong\"?",[12,2665,2666],{},"A strong password has four key properties:",[12,2668,2669,2672],{},[21,2670,2671],{},"Length"," — At minimum 12 characters; 16 or more is significantly better. Every extra character exponentially increases the number of possible combinations a brute-force attack must try.",[12,2674,2675,2678,2679,2682,2683,2686],{},[21,2676,2677],{},"Randomness"," — Human-chosen passwords are predictable. We gravitate toward words, names, keyboard patterns (",[16,2680,2681],{},"qwerty123","), and substitutions (",[16,2684,2685],{},"p@ssw0rd",") that attackers know to try first. True randomness eliminates that predictability.",[12,2688,2689,2692,2693,2695],{},[21,2690,2691],{},"Character variety"," — Mixing uppercase letters, lowercase letters, digits, and symbols (",[16,2694,2396],{},") dramatically expands the search space for any cracking algorithm.",[12,2697,2698,2701],{},[21,2699,2700],{},"Uniqueness"," — Each account should have a different password. If one site's database is compromised, credential stuffing attacks won't work on your other accounts.",[29,2703,2705],{"id":2704},"common-password-attacks-you-should-know","Common Password Attacks You Should Know",[76,2707,2708,2714,2719,2724],{},[79,2709,2710,2713],{},[21,2711,2712],{},"Brute force"," — Trying every possible combination. Short passwords with limited character sets fall in seconds.",[79,2715,2716,2718],{},[21,2717,2344],{}," — Using lists of common words, phrases, and known leaked passwords.",[79,2720,2721,2723],{},[21,2722,2350],{}," — Taking username\u002Fpassword pairs from one breach and trying them on other services.",[79,2725,2726,2729],{},[21,2727,2728],{},"Phishing"," — Tricking you into entering your password on a fake site. Strong passwords don't help here — use a password manager and check URLs.",[29,2731,2733],{"id":2732},"how-to-use-ujiffy-password-generator","How to Use ujiffy Password Generator",[12,2735,2736],{},"ujiffy's Password Generator creates cryptographically random passwords directly in your browser:",[1233,2738,2739,2745,2751,2757],{},[79,2740,2741,2744],{},[21,2742,2743],{},"Set the length"," — drag the slider or type a number. We recommend at least 16 characters.",[79,2746,2747,2750],{},[21,2748,2749],{},"Choose character sets"," — toggle uppercase, lowercase, numbers, and symbols on or off to match the site's requirements.",[79,2752,2753,2756],{},[21,2754,2755],{},"Click \"Generate\""," — a new random password appears instantly.",[79,2758,2759,2762],{},[21,2760,2761],{},"Copy with one click"," — paste it straight into your password manager.",[12,2764,2765],{},"Because generation happens entirely in your browser using the Web Crypto API, the password is never sent to any server. There's nothing to log, nothing to intercept.",[29,2767,2769],{"id":2768},"best-practices-beyond-generation","Best Practices Beyond Generation",[12,2771,2772],{},"Generating a strong password is step one. Here's what to do next:",[76,2774,2775,2781,2787,2793],{},[79,2776,2777,2780],{},[21,2778,2779],{},"Store it in a password manager"," (Bitwarden, 1Password, etc.) — don't try to memorize it.",[79,2782,2783,2786],{},[21,2784,2785],{},"Enable two-factor authentication (2FA)"," wherever possible for a second layer of protection.",[79,2788,2789,2792],{},[21,2790,2791],{},"Never share passwords"," via email, chat, or SMS — use a secure sharing feature in your password manager if needed.",[79,2794,2795,2798],{},[21,2796,2797],{},"Rotate passwords"," for critical accounts (email, banking) at least once a year, or immediately after any suspected breach.",[2800,2801],"hr",{},[12,2803,2804],{},"Your accounts are only as secure as your weakest password. Let ujiffy handle the randomness.",[12,2806,2807],{},[467,2808,2809],{"href":2616},[21,2810,2619],{},{"title":302,"searchDepth":344,"depth":344,"links":2812},[2813,2814,2815,2816,2817],{"id":2652,"depth":344,"text":2653},{"id":2662,"depth":344,"text":2663},{"id":2704,"depth":344,"text":2705},{"id":2732,"depth":344,"text":2733},{"id":2768,"depth":344,"text":2769},"Understand what makes a password truly secure, learn the most common attack vectors, and discover how to generate strong random passwords instantly with ujiffy's free Password Generator.",{},"\u002Fblog\u002Fgenerate-secure-passwords-online","2025-05-05",{"title":2647,"description":2818},"blog\u002Fgenerate-secure-passwords-online",[2319,2641],"a1bH1TA6o86WDgc3PjkXVIRhCVnfRXBbAdcpLCBHjWQ",{"id":2827,"title":2828,"author":7,"body":2829,"description":3038,"draft":491,"extension":492,"lang":493,"meta":3039,"navigation":495,"path":3040,"pubDate":3041,"relatedTool":3042,"seo":3043,"stem":3044,"tags":3045,"__hash__":3048},"blog\u002Fblog\u002Fhow-to-format-json-online.mdx","How to Format JSON Online (Free Tool)",{"type":9,"value":2830,"toc":3031},[2831,2835,2838,2841,2861,2865,2874,2888,2896,2904,2908,2911,2937,2940,2944,2947,2991,2994,2998,3018,3020,3023],[29,2832,2834],{"id":2833},"why-json-formatting-matters","Why JSON Formatting Matters",[12,2836,2837],{},"JSON (JavaScript Object Notation) is the backbone of modern APIs and data exchange. But raw JSON — especially from a network response or database dump — is often a single compressed line with no whitespace. Trying to read or debug that is painful.",[12,2839,2840],{},"Formatting JSON means adding consistent indentation and line breaks so the structure becomes immediately readable. A well-formatted JSON file lets you:",[76,2842,2843,2849,2855],{},[79,2844,2845,2848],{},[21,2846,2847],{},"Spot errors faster"," — mismatched braces, missing commas, or wrong data types stand out instantly.",[79,2850,2851,2854],{},[21,2852,2853],{},"Understand nested structures"," — deeply nested objects and arrays are navigable at a glance.",[79,2856,2857,2860],{},[21,2858,2859],{},"Share and review code"," — formatted JSON is far easier to discuss in code reviews or documentation.",[29,2862,2864],{"id":2863},"common-scenarios-where-you-need-a-json-formatter","Common Scenarios Where You Need a JSON Formatter",[12,2866,2867,2870,2873],{},[21,2868,2869],{},"1. Debugging API responses",[2871,2872],"br",{},"\nYou paste a raw response from Postman or your browser's network tab and need to understand what the server actually returned.",[12,2875,2876,2879,2881,746,2884,2887],{},[21,2877,2878],{},"2. Working with config files",[2871,2880],{},[16,2882,2883],{},"package.json",[16,2885,2886],{},"tsconfig.json",", AWS IAM policies — JSON config files should be human-readable and consistently indented.",[12,2889,2890,2893,2895],{},[21,2891,2892],{},"3. Comparing JSON data",[2871,2894],{},"\nBefore diffing two JSON blobs, formatting both ensures whitespace differences don't obscure real changes.",[12,2897,2898,2901,2903],{},[21,2899,2900],{},"4. Cleaning up minified production output",[2871,2902],{},"\nMinified JSON reduces payload size, but you'll need to reverse that locally when debugging.",[29,2905,2907],{"id":2906},"how-to-use-ujiffy-json-formatter","How to Use ujiffy JSON Formatter",[12,2909,2910],{},"ujiffy's JSON Formatter is a free, browser-based tool that requires zero sign-up:",[1233,2912,2913,2919,2925,2931],{},[79,2914,2915,2918],{},[21,2916,2917],{},"Paste your JSON"," into the input panel — it accepts any valid JSON, however messy.",[79,2920,2921,2924],{},[21,2922,2923],{},"Click \"Format\""," and the tool instantly outputs your JSON with clean 2-space indentation.",[79,2926,2927,2930],{},[21,2928,2929],{},"Optionally minify"," — toggle the Minify option to compress the JSON back into a single line for production use.",[79,2932,2933,2936],{},[21,2934,2935],{},"Copy or download"," the result with one click.",[12,2938,2939],{},"Everything runs in your browser. Your data never leaves your machine, which matters when you're handling sensitive API keys or private data.",[29,2941,2943],{"id":2942},"format-vs-validate-vs-minify","Format vs. Validate vs. Minify",[12,2945,2946],{},"It helps to know the difference between these three operations:",[178,2948,2949,2959],{},[181,2950,2951],{},[184,2952,2953,2956],{},[187,2954,2955],{},"Operation",[187,2957,2958],{},"What it does",[194,2960,2961,2971,2981],{},[184,2962,2963,2968],{},[199,2964,2965],{},[21,2966,2967],{},"Format",[199,2969,2970],{},"Adds indentation and line breaks for readability",[184,2972,2973,2978],{},[199,2974,2975],{},[21,2976,2977],{},"Minify",[199,2979,2980],{},"Removes all unnecessary whitespace to reduce size",[184,2982,2983,2988],{},[199,2984,2985],{},[21,2986,2987],{},"Validate",[199,2989,2990],{},"Checks whether the JSON is syntactically correct",[12,2992,2993],{},"ujiffy's JSON Formatter handles all three in one place.",[29,2995,2997],{"id":2996},"tips-for-clean-json","Tips for Clean JSON",[76,2999,3000,3003,3006],{},[79,3001,3002],{},"Always use double quotes for keys — single quotes are not valid JSON.",[79,3004,3005],{},"Trailing commas are not allowed in standard JSON (though some parsers are lenient).",[79,3007,3008,746,3011,2320,3014,3017],{},[16,3009,3010],{},"null",[16,3012,3013],{},"true",[16,3015,3016],{},"false"," are lowercase keywords, not strings.",[2800,3019],{},[12,3021,3022],{},"Ready to format your JSON? Try the tool below — paste and beautify in seconds.",[12,3024,3025],{},[467,3026,3028],{"href":3027},"\u002Ftools\u002Fjson-formatter",[21,3029,3030],{},"Try ujiffy JSON Formatter →",{"title":302,"searchDepth":344,"depth":344,"links":3032},[3033,3034,3035,3036,3037],{"id":2833,"depth":344,"text":2834},{"id":2863,"depth":344,"text":2864},{"id":2906,"depth":344,"text":2907},{"id":2942,"depth":344,"text":2943},{"id":2996,"depth":344,"text":2997},"Learn why JSON formatting matters, when you need it, and how to use ujiffy's free JSON Formatter to beautify or minify JSON instantly — no signup required.",{},"\u002Fblog\u002Fhow-to-format-json-online","2025-05-01","json-formatter",{"title":2828,"description":3038},"blog\u002Fhow-to-format-json-online",[3046,3047],"json","developer-tools","ORMBNUJjr-KbfGzFf1bS2hCGWj7-TCxiMxJDrxX0p5Q",1778831411393]