{
  "id": 49,
  "slug": "password-generator",
  "type": "tool",
  "title": "Password Generator — Strong & Free",
  "summary": "Generate strong, random passwords with custom length and characters. 100% in your browser — free, no sign-up.",
  "category_slug": "dev",
  "category_name": "Developer Tools",
  "locale": "en",
  "seo": {
    "description": "Free online strong password generator. Create random, secure passwords with custom length, symbols, and digits — generated in your browser, never sent anywhere."
  },
  "data": {
    "howto": [
      {
        "step": 1,
        "text": "Choose a length and which character types to include."
      },
      {
        "step": 2,
        "text": "A password is generated instantly in your browser."
      },
      {
        "step": 3,
        "text": "Copy it, or regenerate until you are happy."
      }
    ],
    "sections": [
      {
        "body": "Strength comes from length and unpredictability. A long password drawn from a large mix of character types — uppercase, lowercase, digits, and symbols — has so many possible combinations that guessing or brute-forcing it becomes impractical. Length matters more than any single clever substitution.",
        "heading": "What makes a strong password?"
      },
      {
        "body": "Each character is picked using your browser's cryptographically secure randomness (crypto.getRandomValues) with rejection sampling, so every character in the pool is equally likely and there is no bias. The password is created entirely on your device and never sent over the network.",
        "heading": "How this generator works"
      },
      {
        "body": "Create a unique password for every account, generate a strong passphrase for a new sign-up, or replace a reused or leaked password. Pair it with a password manager so you never have to remember the long random strings.",
        "heading": "When to use it"
      },
      {
        "body": "Predictable patterns — a word with a number on the end, common letter-for-symbol swaps — are the first things attackers try. True randomness removes patterns, and each extra character multiplies the number of possibilities, which is why a longer random password is far stronger than a short 'complex' one.",
        "heading": "Why randomness and length beat tricks"
      }
    ],
    "toolKind": "client",
    "clientApp": "password"
  },
  "updated_at": "2026-07-02T09:04:07.897Z",
  "faq": [
    {
      "q": "Are the passwords generated privately?",
      "a": "Yes. Each password is created from secure randomness in your browser (crypto.getRandomValues) and is never sent over the network."
    },
    {
      "q": "How long should my password be?",
      "a": "Longer is stronger. 16 characters or more from a mix of character types is a good default; use the length slider to go higher for important accounts."
    },
    {
      "q": "What does \"no ambiguous characters\" do?",
      "a": "It removes look-alike characters (0 O 1 l I |) so the password is easier to read and type by hand without mistakes."
    },
    {
      "q": "Should I reuse a generated password?",
      "a": "No. Generate a unique password for every account and store them in a password manager — reuse is what makes one leak compromise many accounts."
    },
    {
      "q": "Is it free?",
      "a": "Yes, completely free — no sign-up and no watermark."
    }
  ],
  "related": [
    {
      "slug": "json-formatter",
      "title": "JSON Formatter & Validator — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Paste your JSON — it is processed in your browser and never uploaded."
          },
          {
            "step": 2,
            "text": "Click Format to beautify, or Minify to compact it."
          },
          {
            "step": 3,
            "text": "If the JSON is invalid, read the error to find the problem."
          },
          {
            "step": 4,
            "text": "Copy the result."
          }
        ],
        "sections": [
          {
            "body": "It takes raw JSON and pretty-prints it with consistent indentation so it is easy to read, or minifies it to the smallest valid form. It also validates the JSON, pointing out where a missing comma, bracket, or quote breaks the structure.",
            "heading": "What does a JSON formatter do?"
          },
          {
            "body": "Parsing, formatting, and validation all run locally with the browser's own JSON engine — your data is never sent anywhere. That means you can safely paste API responses, config, or anything sensitive without it leaving your device.",
            "heading": "How it works in your browser"
          },
          {
            "body": "Make a cramped API response readable, spot the exact line where invalid JSON fails, tidy up a config file before committing it, or minify JSON to save space in a request or file. It is a daily tool for anyone working with APIs.",
            "heading": "When to use it"
          },
          {
            "body": "Formatting (beautifying) adds indentation and line breaks for humans; minifying strips all unnecessary whitespace for machines, making the payload smaller. Use format while reading or debugging, and minify for production or storage.",
            "heading": "Format vs minify"
          }
        ],
        "toolKind": "client",
        "clientApp": "json-formatter"
      }
    },
    {
      "slug": "jwt-decoder",
      "title": "JWT Decoder — Free, In Browser",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Paste a JWT — it is decoded in your browser and never uploaded."
          },
          {
            "step": 2,
            "text": "Read the decoded header and payload as JSON."
          },
          {
            "step": 3,
            "text": "Check the issued-at and expiry times to see if it is still valid."
          }
        ],
        "sections": [
          {
            "body": "A JSON Web Token (JWT) is a compact, signed token used for authentication and authorization. It has three Base64url parts separated by dots — header, payload, and signature — that together carry claims like who the user is and when the token expires.",
            "heading": "What is a JWT?"
          },
          {
            "body": "Paste a token and it is split and Base64url-decoded in your browser to reveal the header and payload as readable JSON, including issued-at and expiry times. The token never leaves your device, so it is safe to inspect real tokens.",
            "heading": "How decoding works here"
          },
          {
            "body": "Debug why a login or API call is rejected, check what claims and roles a token carries, confirm whether a token has expired, or inspect the algorithm in the header while building an auth flow.",
            "heading": "When to use a JWT decoder"
          },
          {
            "body": "This tool decodes a JWT so you can read it; it does not verify the signature. Anyone can read a JWT's payload, so never put secrets in it. Only the server holding the signing key can confirm a token is genuine and untampered.",
            "heading": "Decoding is not verifying"
          }
        ],
        "toolKind": "client",
        "clientApp": "jwt-decoder"
      }
    },
    {
      "slug": "base64",
      "title": "Base64 Encode / Decode — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Pick Encode or Decode."
          },
          {
            "step": 2,
            "text": "Type or paste your text — it is processed in your browser, never uploaded."
          },
          {
            "step": 3,
            "text": "Copy the result."
          }
        ],
        "sections": [
          {
            "body": "Base64 encodes binary or text data using only 64 safe characters, so it can travel through systems that expect plain text — like JSON, URLs, email, or HTML. It is an encoding, not encryption: it hides nothing, it just makes data safe to transport.",
            "heading": "What is Base64?"
          },
          {
            "body": "Encoding and decoding run entirely in your browser and are UTF-8 safe, so accented characters and emoji round-trip correctly. Your text is never uploaded, so you can safely encode or decode sensitive values.",
            "heading": "How it works here"
          },
          {
            "body": "Embed a small image or file in code as a data URI, store binary data in a JSON or XML field, decode a Base64 string from an API or config, or inspect the payload of a token. It is everywhere in web and API work.",
            "heading": "When to use Base64"
          },
          {
            "body": "Anyone can decode Base64 instantly — it provides no security. Use it to make data transport-safe, never to protect secrets. For confidentiality you need real encryption, not encoding.",
            "heading": "Encoding is not encryption"
          }
        ],
        "toolKind": "client",
        "clientApp": "base64"
      }
    },
    {
      "slug": "hash-generator",
      "title": "Hash Generator (SHA-256, SHA-1, SHA-512) — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Type or paste your text — it is hashed in your browser and never uploaded."
          },
          {
            "step": 2,
            "text": "Choose an algorithm (SHA-256 is a good default)."
          },
          {
            "step": 3,
            "text": "Copy the resulting hash."
          }
        ],
        "sections": [
          {
            "body": "A cryptographic hash turns any input into a fixed-length string of characters that is practically impossible to reverse. The same input always produces the same hash, and even a tiny change to the input produces a completely different one — which makes hashes ideal for fingerprinting and integrity checks.",
            "heading": "What is a hash?"
          },
          {
            "body": "Hashes are computed with the browser's built-in Web Crypto API, entirely on your device — your input never leaves the page. You can generate SHA-256, SHA-1, SHA-384, and SHA-512 from the same text and copy whichever you need.",
            "heading": "How hashing works here"
          },
          {
            "body": "Verify a downloaded file matches a published checksum, generate a fingerprint of some data, compare two inputs without storing them, or produce a hash for a quick integrity check. Developers use hashes constantly for caching keys and data verification.",
            "heading": "When to use it"
          },
          {
            "body": "Prefer SHA-256 or SHA-512 for new work — they are the current standards. SHA-1 is included for compatibility with older systems but is considered weak and should not be used for security. Note that none of these are meant for hashing passwords; that needs a slow, salted algorithm like bcrypt or Argon2.",
            "heading": "Which algorithm should I use?"
          }
        ],
        "toolKind": "client",
        "clientApp": "hash"
      }
    },
    {
      "slug": "url-encode",
      "title": "URL Encode / Decode — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Pick Encode or Decode."
          },
          {
            "step": 2,
            "text": "Type or paste your text — it is processed in your browser, never uploaded."
          },
          {
            "step": 3,
            "text": "Copy the result."
          }
        ],
        "sections": [
          {
            "body": "URL encoding (percent-encoding) replaces characters that have special meaning or are unsafe in a web address — like spaces, &, ?, and non-ASCII characters — with a % followed by their code. This lets you safely put arbitrary text into a URL or query string without breaking it.",
            "heading": "What is URL encoding?"
          },
          {
            "body": "Encoding and decoding use the browser's standard encodeURIComponent and decodeURIComponent, run entirely on your device. Nothing is uploaded, so you can encode tokens, parameters, or any text safely.",
            "heading": "How it works here"
          },
          {
            "body": "Build a query-string parameter that contains spaces or symbols, decode a messy URL to read what it actually says, fix a link where special characters were mangled, or prepare a value for an API request.",
            "heading": "When to use it"
          },
          {
            "body": "This tool encodes a single component (a parameter value), so it also escapes characters like & and = that separate parts of a URL. Use it on individual values, not on a whole finished URL, or those structural characters will be escaped too.",
            "heading": "Component vs full-URL encoding"
          }
        ],
        "toolKind": "client",
        "clientApp": "url-encode"
      }
    },
    {
      "slug": "uuid-generator",
      "title": "UUID Generator (v4) — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Choose how many UUIDs you need."
          },
          {
            "step": 2,
            "text": "Click Generate — they are created in your browser."
          },
          {
            "step": 3,
            "text": "Copy one or copy the whole list."
          }
        ],
        "sections": [
          {
            "body": "A UUID (Universally Unique Identifier) is a 128-bit value, written as 36 characters like 550e8400-e29b-41d4-a716-446655440000, used as an identifier that is unique without a central authority. Version 4 UUIDs are generated from random data, so two systems can create IDs independently without ever colliding in practice.",
            "heading": "What is a UUID?"
          },
          {
            "body": "UUIDs are created from cryptographically secure randomness in your browser — they are never sent over the network. You can generate one or many at once and copy the whole list.",
            "heading": "How generation works here"
          },
          {
            "body": "Assign IDs to database rows, files, events, or API resources without coordinating a counter; create idempotency keys for requests; or seed test data. They are ideal whenever multiple clients or services need to mint IDs independently.",
            "heading": "When to use UUIDs"
          },
          {
            "body": "Version 4 UUIDs are random, so they need no MAC address, timestamp, or central server and reveal nothing about where or when they were made. The chance of two colliding is so small it is safe to treat them as unique for virtually any application.",
            "heading": "Why v4 random UUIDs?"
          }
        ],
        "toolKind": "client",
        "clientApp": "uuid"
      }
    },
    {
      "slug": "timestamp-converter",
      "title": "Unix Timestamp Converter — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Enter a Unix timestamp, or pick a date."
          },
          {
            "step": 2,
            "text": "Read the converted value — it is computed in your browser."
          },
          {
            "step": 3,
            "text": "Watch the seconds-vs-milliseconds unit if a result looks off."
          }
        ],
        "sections": [
          {
            "body": "A Unix timestamp is the number of seconds (or milliseconds) since midnight UTC on 1 January 1970, called the epoch. It is a simple, timezone-free way to store a moment in time, which is why databases, logs, and APIs use it everywhere.",
            "heading": "What is a Unix timestamp?"
          },
          {
            "body": "Enter an epoch value to see the human-readable date, or pick a date to get its timestamp. It handles both seconds and milliseconds and computes everything in your browser — nothing is uploaded.",
            "heading": "How conversion works here"
          },
          {
            "body": "Read the timestamp in a log line or API response, set an exact expiry value, debug why two times do not match, or convert a date into the epoch a system expects. It is a constant need when working with logs and APIs.",
            "heading": "When to use it"
          },
          {
            "body": "Unix timestamps usually come in seconds (10 digits today) but many languages, including JavaScript, use milliseconds (13 digits). If a converted date looks wildly wrong, you are probably mixing the two — check the digit count.",
            "heading": "Seconds vs milliseconds"
          }
        ],
        "toolKind": "client",
        "clientApp": "timestamp"
      }
    },
    {
      "slug": "text-diff",
      "title": "Text Diff Checker — Free, In Browser",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Paste the original text and the changed text — both stay in your browser."
          },
          {
            "step": 2,
            "text": "Click Compare."
          },
          {
            "step": 3,
            "text": "Review the highlighted added and removed lines."
          }
        ],
        "sections": [
          {
            "body": "A diff compares two blocks of text and highlights exactly what changed — which lines were added, which were removed, and which stayed the same. Instead of re-reading both versions, you see the differences at a glance.",
            "heading": "What does a text diff do?"
          },
          {
            "body": "Both texts are compared locally and the result is highlighted line by line, entirely on your device. Nothing is uploaded, so you can safely diff code, contracts, or any private text.",
            "heading": "How it works in your browser"
          },
          {
            "body": "Spot what changed between two drafts of a document, compare two versions of a config or code snippet, check what someone edited, or confirm that a copy matches the original. It is faster and more reliable than scanning by eye.",
            "heading": "When to use a diff"
          },
          {
            "body": "Removed lines (in the original but not the new text) and added lines (in the new text but not the original) are marked distinctly, while unchanged lines provide context. A line that was edited shows up as one removal plus one addition.",
            "heading": "Reading the result"
          }
        ],
        "toolKind": "client",
        "clientApp": "diff"
      }
    },
    {
      "slug": "random-number-generator",
      "title": "Random Number Generator — Free",
      "type": "tool",
      "category_slug": "dev",
      "kind": "related",
      "data": {
        "howto": [
          {
            "step": 1,
            "text": "Set the minimum and maximum, and how many numbers you need."
          },
          {
            "step": 2,
            "text": "Optionally turn on no-repeats for unique values."
          },
          {
            "step": 3,
            "text": "Click Generate and copy the result."
          }
        ],
        "sections": [
          {
            "body": "It picks random whole numbers between a minimum and maximum you choose. You can draw a single number or many at once, and optionally require that every number is unique — useful for draws where the same value should not appear twice.",
            "heading": "What does it do?"
          },
          {
            "body": "Numbers come from your browser's cryptographically secure randomness (crypto.getRandomValues) with rejection sampling, so each value in your range is equally likely and there is no bias toward any number. Everything runs on your device — nothing is sent anywhere.",
            "heading": "How the numbers are generated"
          },
          {
            "body": "Run a giveaway or raffle draw, pick a winner from a numbered list, choose a random sample, roll dice or simulate chance, or generate test data. The no-repeats option is ideal for lotteries and unique seat or ticket draws.",
            "heading": "When to use it"
          },
          {
            "body": "Naively taking a random value modulo the range size slightly favours some numbers. This tool uses rejection sampling to discard out-of-range draws, so every number in your chosen range has an exactly equal chance — a genuinely fair draw.",
            "heading": "Fairness and bias"
          }
        ],
        "toolKind": "client",
        "clientApp": "random-number"
      }
    }
  ]
}