<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/521624733059f893.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-40e5a1df8eb354c6.js"/><script src="/_next/static/chunks/4bd1b696-20882bf820444624.js" async=""></script><script src="/_next/static/chunks/517-db017b20e1478907.js" async=""></script><script src="/_next/static/chunks/main-app-e8fc0062061acc49.js" async=""></script><script src="/_next/static/chunks/app/page-384aa63c7904efc3.js" async=""></script><title>Dev tools - UUID, Password, Base64, JSON, URL</title><meta name="description" content="Dev tools - UUID &amp; Password generators, Base64 encode/decode, JSON Pretifier/Minifie, URL encode/decode"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div class="container mx-auto"><header class="p-4 sm:py-6"><h1 class="font-extrabold text-6xl sm:text-8xl">Dev <span class="text-transparent bg-clip-text bg-gradient-to-r from-sky-500 via-purple-500 to-pink-500 ">tools</span></h1><h2 class="pl-2">Run on <strong>Wasm</strong> server side.</h2></header><section class="p-2"><div class="sm:flex sm:space-x-4 lg:h-40 lg:max-h-40 my-5"><div class="sm:basis-1/2 bg-gray-100  p-3 sm:p-5 rounded shadow-md"><h2 class="font-bold text-xl sm:text-2xl mb-4 text-sky-500">Uuid generator</h2><form class="lg:flex lg:space-x-2" action="" method="post"><div class="lg:basis-1/2"><label for="version" class="block">Version</label><select id="version" name="version" class="rounded focus:outline-none focus:border-sky-400 focus:ring-1 focus:ring-sky-400" required=""><option value="4">Version 4 (Random)</option><option value="5">Version 5 (Sha1)</option><option value="7" selected="">Version 7 (SortRand)</option></select></div><div class="lg:basis-1/2"><label for="sample_to_generate" class="block">Number to generate</label><input type="text" id="sample_to_generate" maxLength="2" required="" class="rounded focus:outline-none focus:border-sky-400 focus:ring-1 focus:ring-sky-400" name="sample_to_generate" value="4"/></div><button type="submit" class="font-bold text-white bg-sky-500 hover:bg-sky-600 rounded p-3 my-5">Generate</button></form></div></div><div class="sm:flex sm:space-x-4 my-5"><div class="sm:basis-1/2 bg-gray-100 p-3 sm:p-5 rounded shadow-md"><h2 class="font-bold text-xl sm:text-2xl mb-4 text-blue-500">Password generator</h2><form action="" method="post"><div class="relative flex items-start"><div class="flex leading-10 pr-5"><label for="length">Length of the password.</label></div><div class="items-center"><input id="length" aria-describedby="password-length" type="text" maxLength="2" size="2" class="rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="length" value="20"/></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="numbers" aria-describedby="numbers-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="numbers" checked=""/></div><div class="ml-3 leading-6"><label for="numbers">Use numbers</label></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="lowercase_letters" aria-describedby="lowercase_letters-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="lowercase_letters" checked=""/></div><div class="ml-3 leading-6"><label for="lowercase_letters">Use lowercase letters</label></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="uppercase_letters" aria-describedby="uppercase_letters-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="uppercase_letters" checked=""/></div><div class="ml-3 leading-6"><label for="lowercase_letters">Use uppercase letters</label></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="symbols" aria-describedby="symbols-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="symbols" checked=""/></div><div class="ml-3 leading-6"><label for="symbols">Use symbols</label></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="spaces" aria-describedby="space-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="spaces"/></div><div class="ml-3 leading-6"><label for="spaces">Use spaces</label></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="exclude_similar_characters" aria-describedby="exclude_similar_characters-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="exclude_similar_characters" checked=""/></div><div class="ml-3 leading-6"><label for="exclude_similar_characters">Exclude similar characters</label><p class="text-gray-500 text-sm italic">Whether to exclude similar characters, iI1loO0&quot;&#x27;`|.</p></div></div><div class="relative flex items-start"><div class="flex h-6 items-center"><input id="strict" aria-describedby="strict-description" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-600" name="strict" checked=""/></div><div class="ml-3 leading-6"><label for="strict">Strict</label><p class="text-gray-500 text-sm italic">Whether the password rules are strict.</p></div></div><button type="submit" class="font-bold text-white bg-blue-500 hover:bg-blue-600 rounded p-3 my-5">Process</button></form></div></div><div class="sm:flex sm:space-x-4 my-5"><div class="sm:basis-1/2 bg-gray-100 p-3 sm:p-5 rounded shadow-md"><h2 class="font-bold text-xl sm:text-2xl mb-4 text-indigo-500">Base64 encode &amp; decode</h2><form action="" method="post"><div><label for="action" class="block">Action</label><select id="action" name="action" class="rounded focus:outline-none focus:border-indigo-400 focus:ring-1 focus:ring-indigo-400" required=""><option value="">-- choose an action --</option><option value="encode">Encode</option><option value="decode">Decode</option></select></div><div class="mt-4"><label for="input" class="block">The string to apply action</label><textarea id="input" name="input" rows="2" maxLength="255" class="w-full rounded focus:outline-none focus:border-indigo-400 focus:ring-1 focus:ring-indigo-400" required=""></textarea></div><button type="submit" class="font-bold text-white bg-indigo-500 hover:bg-indigo-600 rounded p-3 my-5">Process</button></form></div></div><div class="sm:flex sm:space-x-4 my-5"><div class="sm:basis-1/2 bg-gray-100 p-3 sm:p-5 rounded shadow-md"><h2 class="font-bold text-xl sm:text-2xl mb-4 text-purple-500">URL encode &amp; decode</h2><form action="" method="post"><div><label for="action" class="block">Action</label><select id="action" name="action" class="rounded focus:outline-none focus:border-purple-400 focus:ring-1 focus:ring-purple-400" required=""><option value="">-- choose an action --</option><option value="encode">Encode</option><option value="decode">Decode</option></select></div><div class="mt-4"><label for="input" class="block">The string to apply action</label><textarea id="input" name="input" rows="2" maxLength="255" class="w-full rounded focus:outline-none focus:border-purple-400 focus:ring-1 focus:ring-purple-400" required=""></textarea></div><button type="submit" class="font-bold text-white bg-purple-500 hover:bg-purple-600 rounded p-3 my-5">Process</button></form></div></div><div class="sm:flex sm:space-x-4 my-5"><div class="sm:basis-1/2 bg-gray-100 p-3 sm:p-5 rounded shadow-md"><h2 class="font-bold text-xl sm:text-2xl mb-4 text-pink-500">Json prettyfier &amp; minifier</h2><form action="" method="post"><div><label for="action" class="block">Action</label><select id="action" name="action" class="rounded focus:outline-none focus:border-pink-400 focus:ring-1 focus:ring-pink-400" required=""><option value="">-- choose an action --</option><option value="prettify">Prettify</option><option value="minify">Minify</option></select></div><div class="mt-4"><label for="input" class="block">The string to apply action</label><textarea id="input" name="input" rows="10" maxLength="4096" class="w-full rounded focus:outline-none focus:border-pink-400 focus:ring-1 focus:ring-pink-400" required=""></textarea></div><button type="submit" class="font-bold text-white bg-pink-500 hover:bg-pink-600 rounded p-3 my-5">Process</button></form></div></div></section><footer><div class="sm:flex justify-center sm:space-x-4 my-5 text-gray-400"><div class="text-center">Run on <a href="https://www.fermyon.com/cloud" target="_blank" class="underline decoration-sky-500 hover:text-sky-500">Fermyon Cloud</a></div><div class="text-center">Contribute on <a href="https://github.com/FabienD/spin-dev-tools" target="_blank" class="underline decoration-pink-500 hover:text-pink-500"> Github</a></div></div></footer></div><script src="/_next/static/chunks/webpack-40e5a1df8eb354c6.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[5244,[],\"\"]\n3:I[3866,[],\"\"]\n4:I[2171,[\"974\",\"static/chunks/app/page-384aa63c7904efc3.js\"],\"default\"]\n5:I[5128,[\"974\",\"static/chunks/app/page-384aa63c7904efc3.js\"],\"default\"]\n6:I[70,[\"974\",\"static/chunks/app/page-384aa63c7904efc3.js\"],\"default\"]\n7:I[1046,[\"974\",\"static/chunks/app/page-384aa63c7904efc3.js\"],\"default\"]\n8:I[4537,[\"974\",\"static/chunks/app/page-384aa63c7904efc3.js\"],\"default\"]\n9:I[6213,[],\"OutletBoundary\"]\nb:I[6213,[],\"MetadataBoundary\"]\nd:I[6213,[],\"ViewportBoundary\"]\nf:I[4835,[],\"\"]\n:HL[\"/_next/static/css/521624733059f893.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"1gcmcs1APvMK2Rtp6sf1X\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/521624733059f893.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"container mx-auto\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[],[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"header\",null,{\"className\":\"p-4 sm:py-6\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"font-extrabold text-6xl sm:text-8xl\",\"children\":[\"Dev \",[\"$\",\"span\",null,{\"className\":\"text-transparent bg-clip-text bg-gradient-to-r from-sky-500 via-purple-500 to-pink-500 \",\"children\":\"tools\"}]]}],[\"$\",\"h2\",null,{\"className\":\"pl-2\",\"children\":[\"Run on \",[\"$\",\"strong\",null,{\"children\":\"Wasm\"}],\" server side.\"]}]]}],[\"$\",\"section\",null,{\"className\":\"p-2\",\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{}],[\"$\",\"$L8\",null,{}]]}],[\"$\",\"footer\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"sm:flex justify-center sm:space-x-4 my-5 text-gray-400\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-center\",\"children\":[\"Run on \",[\"$\",\"a\",null,{\"href\":\"https://www.fermyon.com/cloud\",\"target\":\"_blank\",\"className\":\"underline decoration-sky-500 hover:text-sky-500\",\"children\":\"Fermyon Cloud\"}]]}],[\"$\",\"div\",null,{\"className\":\"text-center\",\"children\":[\"Contribute on \",[\"$\",\"a\",null,{\"href\":\"https://github.com/FabienD/spin-dev-tools\",\"target\":\"_blank\",\"className\":\"underline decoration-pink-500 hover:text-pink-500\",\"children\":\" Github\"}]]}]]}]}]],null,[\"$\",\"$L9\",null,{\"children\":\"$La\"}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"FBBoYdoOQsLa7vgfVckbu\",{\"children\":[[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"1\",{\"children\":\"Dev tools - UUID, Password, Base64, JSON, URL\"}],[\"$\",\"meta\",\"2\",{\"name\":\"description\",\"content\":\"Dev tools - UUID \u0026 Password generators, Base64 encode/decode, JSON Pretifier/Minifie, URL encode/decode\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\n"])</script></body></html>