{
    "base64": {
        "id": "base64",
        "slug": "base64",
        "title": "Base64 Encoder & Decoder",
        "description": "Encode and decode Base64 text or files locally in your browser.",
        "category": "encoders",
        "tags": [
            "base64",
            "encode",
            "decode",
            "encoder",
            "decoder"
        ],
        "icon": "code",
        "needsBackend": false,
        "relatedModules": [
            "json-validator"
        ],
        "seoIntro": "Base64 is a binary-to-text encoding scheme that represents binary data in an ASCII string format. It is widely used in email attachments, data URLs, JSON Web Tokens, and storing binary blobs in text-only mediums.\n\nThis tool encodes and decodes Base64 entirely in your browser \u2014 your input never leaves your device.",
        "seoFaq": [
            {
                "q": "Is my data uploaded anywhere?",
                "a": "No. All encoding and decoding happens locally in your browser using the Web platform's btoa/atob and FileReader APIs."
            },
            {
                "q": "What is the maximum file size?",
                "a": "It depends on your browser's available memory; large files (tens of MB) may be slow to render."
            },
            {
                "q": "Does it support URL-safe Base64?",
                "a": "Yes \u2014 toggle the URL-safe option to use - and _ instead of + and /."
            }
        ]
    },
    "color-converter": {
        "id": "color-converter",
        "slug": "color-converter",
        "title": "Color Converter & Contrast Checker",
        "description": "Convert colors between HEX, RGB, HSL and HSV \u2014 plus WCAG contrast ratio checker.",
        "category": "converters",
        "tags": [
            "color",
            "hex",
            "rgb",
            "hsl",
            "hsv",
            "contrast",
            "wcag",
            "accessibility"
        ],
        "icon": "palette",
        "needsBackend": false,
        "relatedModules": [
            "unit-converter"
        ],
        "seoIntro": "Designers and developers constantly switch between color formats \u2014 HEX for CSS, RGB for canvas, HSL for systematic palettes, HSV for color pickers.\n\nThis tool converts a single color across all four notations and checks its WCAG contrast against any background, helping you build accessible interfaces.",
        "seoFaq": [
            {
                "q": "What contrast ratio do I need?",
                "a": "WCAG 2.1 requires 4.5:1 for normal text and 3:1 for large text (AA). For AAA the thresholds are 7:1 and 4.5:1."
            },
            {
                "q": "Why HSL and HSV?",
                "a": "HSL (hue/saturation/lightness) is great for tints and shades. HSV (hue/saturation/value) maps directly to the color wheel used in most design tools."
            },
            {
                "q": "Can I get the alpha channel?",
                "a": "Yes. Use the #rrggbbaa HEX form or the RGBA notation in the input."
            }
        ]
    },
    "compound-interest": {
        "id": "compound-interest",
        "slug": "compound-interest-calculator",
        "title": "Compound Interest & Savings Calculator",
        "description": "Project the growth of your savings with monthly contributions, compound frequency and inflation-adjusted results.",
        "category": "calculators",
        "tags": [
            "compound interest",
            "savings",
            "investment",
            "finance",
            "interest",
            "calculator"
        ],
        "icon": "trending-up",
        "needsBackend": false,
        "relatedModules": [
            "mortgage-calculator",
            "unit-converter"
        ],
        "seoIntro": "Compound interest is the process by which interest earned on an investment is added to the principal so that future interest is earned on a larger base. Over long horizons it produces dramatically larger balances than simple interest \u2014 a phenomenon Einstein famously called \"the eighth wonder of the world\".\n\nThis calculator projects the future value of a savings or investment account given an initial deposit, recurring monthly contributions, an annual interest rate, a compounding frequency and an optional inflation rate. Everything runs locally in your browser.",
        "seoFaq": [
            {
                "q": "Which formula is used?",
                "a": "Future value = P(1+r/n)^(nt) for the lump sum, plus the future value of an annuity for the recurring contributions: PMT \u00b7 ((1+r/n)^(nt) \u2212 1) / (r/n). Contributions are added at the start of each month."
            },
            {
                "q": "What does compounding frequency change?",
                "a": "More frequent compounding earns slightly more because interest is added to the balance sooner. Daily vs annual at 5% over 30 years is roughly a 7% difference in final balance."
            },
            {
                "q": "How is inflation applied?",
                "a": "The real (inflation-adjusted) balance is computed by discounting the nominal balance by (1 + inflation)^t. It tells you the future value in today's purchasing power."
            },
            {
                "q": "Are taxes considered?",
                "a": "No. Tax treatment of savings interest varies wildly by country and account type. Treat the result as a pre-tax baseline."
            }
        ]
    },
    "csv-json": {
        "id": "csv-json",
        "slug": "csv-to-json",
        "title": "CSV \u2194 JSON Converter",
        "description": "Convert between CSV and JSON locally with custom delimiters and quoting \u2014 no upload, no limits.",
        "category": "converters",
        "tags": [
            "csv",
            "json",
            "convert",
            "spreadsheet",
            "data"
        ],
        "icon": "table",
        "needsBackend": false,
        "relatedModules": [
            "json-validator",
            "xml-validator"
        ],
        "seoIntro": "CSV is the lingua franca of spreadsheets and database exports; JSON is the standard for APIs and modern data interchange. Converting between them is a daily chore for analysts and developers.\n\nThis tool converts both directions entirely in your browser. Configurable delimiters, header detection and proper quoting are supported.",
        "seoFaq": [
            {
                "q": "Are my files uploaded?",
                "a": "No. The conversion runs locally \u2014 files never leave your device."
            },
            {
                "q": "Does it handle quotes and embedded commas?",
                "a": "Yes. The CSV parser implements RFC 4180 quoting rules including escaped quotes inside quoted fields."
            },
            {
                "q": "What's the size limit?",
                "a": "Limited only by your browser's available memory. Very large files (100+ MB) may freeze the tab \u2014 split them first."
            }
        ]
    },
    "dns-lookup": {
        "id": "dns-lookup",
        "slug": "dns-lookup",
        "title": "DNS Lookup",
        "description": "Query DNS records (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA) for any public domain.",
        "category": "networking",
        "tags": [
            "dns",
            "lookup",
            "mx",
            "txt",
            "ns",
            "domain"
        ],
        "icon": "globe",
        "needsBackend": true,
        "relatedModules": [
            "ping"
        ],
        "seoIntro": "DNS (Domain Name System) translates human-readable hostnames into IP addresses and other records. This tool resolves DNS records for any public domain name from our server. Queries are rate-limited and cached briefly to keep the service free for everyone.",
        "seoFaq": [
            {
                "q": "Which record types are supported?",
                "a": "A, AAAA, MX, TXT, NS, CNAME, SOA and CAA."
            },
            {
                "q": "Why are some queries throttled?",
                "a": "To keep the service available to everyone we apply per-IP rate limits on backend lookups."
            }
        ]
    },
    "ev-efficiency": {
        "id": "ev-efficiency",
        "slug": "ev-efficiency-converter",
        "title": "EV Efficiency Converter (Wh/km, kWh/100km, mi/kWh, MPGe)",
        "description": "Convert electric vehicle efficiency between Wh/km, kWh/100km, mi/kWh and MPGe. Estimate range and charging cost.",
        "category": "converters",
        "tags": [
            "ev",
            "electric",
            "efficiency",
            "kwh",
            "mpge",
            "wh/km",
            "range",
            "tesla"
        ],
        "icon": "battery-charging",
        "needsBackend": false,
        "relatedModules": [
            "fuel-consumption",
            "unit-converter"
        ],
        "seoIntro": "Electric vehicle efficiency is reported in many ways. Europe and most manufacturers use Wh/km or kWh/100km (lower is better). The US EPA reports mi/kWh and MPGe \u2014 Miles Per Gallon equivalent \u2014 based on the energy content of a gallon of gasoline (33.7 kWh).\n\nThis tool converts between all four notations and estimates the range and charging cost from your battery capacity.",
        "seoFaq": [
            {
                "q": "What is MPGe?",
                "a": "Miles Per Gallon equivalent. The US EPA defines 1 US gallon of gasoline as containing 33.7 kWh of energy, so MPGe = mi/kWh \u00d7 33.7."
            },
            {
                "q": "How do I compare an EV with a gasoline car?",
                "a": "Compare cost per 100 km. EVs are usually 2\u20134\u00d7 cheaper to run because the energy is cheaper and the drivetrain is far more efficient."
            },
            {
                "q": "Why does battery capacity matter?",
                "a": "Range = (battery capacity \u00f7 efficiency). A 75 kWh battery at 16 kWh/100km gives ~470 km of real-world range."
            }
        ]
    },
    "file-converter": {
        "id": "file-converter",
        "slug": "image-converter",
        "title": "Image Converter (PNG / JPG / WEBP)",
        "description": "Convert and resize images locally in your browser using the Canvas API. No uploads.",
        "category": "converters",
        "tags": [
            "image",
            "convert",
            "png",
            "jpg",
            "jpeg",
            "webp",
            "resize"
        ],
        "icon": "image",
        "needsBackend": false,
        "relatedModules": [
            "base64",
            "unit-converter"
        ],
        "seoIntro": "Convert PNG, JPG and WEBP images entirely in your browser. The conversion uses the HTML Canvas API \u2014 your images never leave your device. Optionally resize while keeping the aspect ratio and adjust JPEG/WEBP quality.",
        "seoFaq": [
            {
                "q": "Are my images uploaded?",
                "a": "No. Decoding, conversion and download all happen in the browser."
            },
            {
                "q": "What is the maximum size?",
                "a": "Limited by your browser's memory; images up to about 10 MB usually convert smoothly."
            }
        ]
    },
    "fuel-consumption": {
        "id": "fuel-consumption",
        "slug": "fuel-consumption-converter",
        "title": "Fuel Consumption Converter (L/100km, MPG, km/L)",
        "description": "Convert vehicle fuel economy between L/100km, US MPG, UK MPG and km/L \u2014 and estimate trip cost.",
        "category": "converters",
        "tags": [
            "fuel",
            "consumption",
            "mpg",
            "l/100km",
            "km/l",
            "economy",
            "car"
        ],
        "icon": "fuel",
        "needsBackend": false,
        "relatedModules": [
            "ev-efficiency",
            "unit-converter"
        ],
        "seoIntro": "Different countries report car fuel economy differently. Europe uses litres per 100 km (lower is better), the US uses miles per US gallon, the UK uses miles per Imperial gallon, and many other countries use kilometres per litre.\n\nThis tool converts between all four notations and estimates total fuel use and cost for a trip.",
        "seoFaq": [
            {
                "q": "Why are US MPG and UK MPG different?",
                "a": "An Imperial gallon is about 4.546 L while a US gallon is about 3.785 L. The same car has a higher MPG number in the UK than in the US."
            },
            {
                "q": "Why is L/100km \"reversed\"?",
                "a": "It measures fuel used per fixed distance, so lower is better. MPG and km/L do the opposite \u2014 distance per fuel unit, so higher is better."
            },
            {
                "q": "Are EVs supported?",
                "a": "Use the EV Efficiency Converter for kWh/100km, mi/kWh and MPGe."
            }
        ]
    },
    "hash-generator": {
        "id": "hash-generator",
        "slug": "hash-generator",
        "title": "Hash Generator (SHA-1, SHA-256, SHA-384, SHA-512)",
        "description": "Compute cryptographic hashes of text or files locally \u2014 SHA-1, SHA-256, SHA-384 and SHA-512.",
        "category": "encoders",
        "tags": [
            "hash",
            "sha",
            "sha-256",
            "sha-512",
            "checksum",
            "digest"
        ],
        "icon": "hash",
        "needsBackend": false,
        "relatedModules": [
            "base64",
            "jwt-decoder"
        ],
        "seoIntro": "Cryptographic hash functions take an arbitrary input and produce a fixed-size string that uniquely represents it. They are used for password storage, file integrity checks, digital signatures and content addressing.\n\nThis tool computes hashes locally in your browser using the Web Crypto API \u2014 your input never leaves your device.",
        "seoFaq": [
            {
                "q": "Why no MD5?",
                "a": "MD5 is broken for cryptographic purposes and the Web Crypto API does not expose it. For checksums use SHA-256 instead."
            },
            {
                "q": "Can I hash a file?",
                "a": "Yes. Use the file input \u2014 the file is read locally and the hash is computed in chunks."
            },
            {
                "q": "Are my files uploaded?",
                "a": "No. The Web Crypto API runs entirely in your browser."
            }
        ]
    },
    "json-validator": {
        "id": "json-validator",
        "slug": "json-validator",
        "title": "JSON Validator & Formatter",
        "description": "Validate, format and minify JSON in your browser with detailed error locations.",
        "category": "validators",
        "tags": [
            "json",
            "validate",
            "format",
            "pretty",
            "minify"
        ],
        "icon": "braces",
        "needsBackend": false,
        "relatedModules": [
            "xml-validator",
            "base64"
        ],
        "seoIntro": "JSON (JavaScript Object Notation) is a lightweight data-interchange format. This validator parses your JSON locally in the browser, points to the exact position of syntax errors, and lets you pretty-print or minify the output.",
        "seoFaq": [
            {
                "q": "Is my JSON sent to a server?",
                "a": "No. Parsing and formatting happens entirely in your browser."
            },
            {
                "q": "What size of JSON can I paste?",
                "a": "Up to 1 MB is accepted; larger payloads may slow down the browser."
            }
        ]
    },
    "jwt-decoder": {
        "id": "jwt-decoder",
        "slug": "jwt-decoder",
        "title": "JWT Decoder",
        "description": "Decode and inspect JSON Web Tokens locally \u2014 header, payload and expiry claims.",
        "category": "encoders",
        "tags": [
            "jwt",
            "json web token",
            "decode",
            "auth",
            "bearer"
        ],
        "icon": "key",
        "needsBackend": false,
        "relatedModules": [
            "base64",
            "hash-generator"
        ],
        "seoIntro": "JSON Web Tokens (JWT) are a compact, URL-safe means of representing claims between two parties. They are widely used for authentication, single sign-on and stateless API authorization.\n\nThis tool decodes the header and payload of a JWT entirely in your browser. The signature is shown but not verified \u2014 verifying requires the issuer's secret or public key, which you should never paste into any online tool.",
        "seoFaq": [
            {
                "q": "Does this verify the signature?",
                "a": "No. Verification requires the secret/public key. We deliberately do not accept secrets to keep the tool safe to use on production tokens."
            },
            {
                "q": "Is my token sent anywhere?",
                "a": "No. Decoding happens entirely in your browser; the token never leaves your device."
            },
            {
                "q": "What does iat / exp / nbf mean?",
                "a": "iat = issued at, exp = expiration time, nbf = not before. All are seconds since the Unix epoch and we humanize them automatically."
            }
        ]
    },
    "mortgage-calculator": {
        "id": "mortgage-calculator",
        "slug": "mortgage-calculator",
        "title": "Mortgage & Loan Calculator",
        "description": "Calculate monthly mortgage or loan payments and visualize the full amortization schedule.",
        "category": "calculators",
        "tags": [
            "mortgage",
            "loan",
            "amortization",
            "interest",
            "finance",
            "payment"
        ],
        "icon": "calculator",
        "needsBackend": false,
        "relatedModules": [
            "unit-converter"
        ],
        "seoIntro": "A mortgage payment is calculated using the standard amortization formula based on the principal, the annual interest rate and the loan term. Each payment covers part interest and part principal \u2014 the split shifts as the balance shrinks.\n\nThis calculator computes the monthly payment, the total interest paid, and the full amortization schedule entirely in your browser.",
        "seoFaq": [
            {
                "q": "Which formula is used?",
                "a": "The standard amortization formula: M = P \u00b7 r(1+r)^n / ((1+r)^n - 1), where r is the monthly rate and n the number of payments."
            },
            {
                "q": "Does it support extra payments?",
                "a": "Not yet \u2014 extra payments and bi-weekly schedules are on the roadmap."
            },
            {
                "q": "Is the calculation accurate?",
                "a": "It uses the exact mathematical formula but real-world mortgages may include taxes, insurance and fees. Treat the result as a baseline."
            }
        ]
    },
    "my-ip": {
        "id": "my-ip",
        "slug": "my-ip-address",
        "title": "What's My IP, User Agent & Browser Info",
        "description": "See your public IP address, user agent, request headers and browser capabilities \u2014 instant lookup, no tracking.",
        "category": "networking",
        "tags": [
            "ip",
            "my ip",
            "user agent",
            "headers",
            "browser",
            "ipv4",
            "ipv6"
        ],
        "icon": "globe",
        "needsBackend": true,
        "relatedModules": [
            "dns-lookup",
            "whois",
            "tcp-port-check"
        ],
        "seoIntro": "Your public IP address is the identifier your network uses to communicate with the rest of the Internet. Your user agent describes your browser and operating system. Together they reveal a surprising amount about your setup.\n\nThis tool shows your public IP (both IPv4 and IPv6 if available), parses your user agent, lists every request header your browser sends and probes a few client-side capabilities \u2014 all in one place. We do not log or store any of this information.",
        "seoFaq": [
            {
                "q": "Why does my IP look different here than elsewhere?",
                "a": "If you use a VPN, proxy or corporate network, this is the IP that the rest of the Internet sees \u2014 not your private LAN IP."
            },
            {
                "q": "Can websites really see all those headers?",
                "a": "Yes. Every header listed here is sent automatically by your browser on every HTTP request."
            },
            {
                "q": "Is my data stored anywhere?",
                "a": "No. The information is computed live and discarded immediately. We do not log IPs or user agents for individual users."
            }
        ]
    },
    "password-generator": {
        "id": "password-generator",
        "slug": "password-generator",
        "title": "Password & Passphrase Generator",
        "description": "Generate strong random passwords and memorable passphrases locally \u2014 fully customizable.",
        "category": "generators",
        "tags": [
            "password",
            "passphrase",
            "random",
            "secure",
            "generator"
        ],
        "icon": "lock",
        "needsBackend": false,
        "relatedModules": [
            "hash-generator",
            "qr-generator"
        ],
        "seoIntro": "Strong, unique passwords are the single most effective protection against account takeovers. This tool generates cryptographically random passwords and human-friendly passphrases entirely in your browser using window.crypto.\n\nNothing is sent to any server. Use a password manager to store the result.",
        "seoFaq": [
            {
                "q": "Are these passwords truly random?",
                "a": "Yes. They are generated with crypto.getRandomValues, the browser's cryptographically secure random number generator."
            },
            {
                "q": "Should I use a passphrase or a password?",
                "a": "A 4-6 word passphrase from a large dictionary is easier to remember and as strong as a long random password. Use random passwords for sites where you rely on a password manager."
            },
            {
                "q": "Where are these passwords stored?",
                "a": "Nowhere. Generation is local and ephemeral. Always copy the result into your password manager."
            }
        ]
    },
    "pdf-merge": {
        "id": "pdf-merge",
        "slug": "pdf-merge-split",
        "title": "PDF Merge & Split",
        "description": "Merge multiple PDFs into one, or split a PDF into single pages \u2014 fully in your browser.",
        "category": "converters",
        "tags": [
            "pdf",
            "merge",
            "split",
            "join",
            "combine"
        ],
        "icon": "file-text",
        "needsBackend": false,
        "relatedModules": [
            "image-converter"
        ],
        "seoIntro": "PDF is the universal format for documents but most online editors upload your files to remote servers. This tool merges and splits PDFs entirely inside your browser using the WebAssembly-free pdf-lib library.\n\nYour documents never leave your device.",
        "seoFaq": [
            {
                "q": "Are my PDFs uploaded?",
                "a": "No. Everything happens locally \u2014 pdf-lib runs in your browser."
            },
            {
                "q": "Can I rearrange the pages?",
                "a": "Yes. Drag the items in the merge list to reorder, or remove individual files before merging."
            },
            {
                "q": "What's the file size limit?",
                "a": "Bound only by your browser's available memory. Typical multi-hundred-page PDFs work fine."
            }
        ]
    },
    "ping": {
        "id": "ping",
        "slug": "tcp-port-check",
        "title": "TCP Port Check (Ping)",
        "description": "Check if a TCP port on a public host is open and measure connection latency.",
        "category": "networking",
        "tags": [
            "ping",
            "tcp",
            "port",
            "check",
            "latency"
        ],
        "icon": "activity",
        "needsBackend": true,
        "relatedModules": [
            "dns-lookup"
        ],
        "seoIntro": "Test whether a TCP port on a public host is reachable and measure connection time. Because ICMP is not available on shared hosting, this tool performs a TCP connect to common ports (HTTP, HTTPS, SSH, SMTP, etc.). Hostnames are resolved server-side and private addresses are rejected.",
        "seoFaq": [
            {
                "q": "Why TCP and not ICMP?",
                "a": "Standard ping uses ICMP, which requires elevated privileges not available on shared hosting. A TCP connect provides a similar 'is it up?' answer for any chosen port."
            },
            {
                "q": "Why are some hosts blocked?",
                "a": "Private/internal addresses and metadata endpoints are blocked to prevent abuse."
            }
        ]
    },
    "qr-generator": {
        "id": "qr-generator",
        "slug": "qr-code-generator",
        "title": "QR Code Generator",
        "description": "Generate QR codes for URLs, text, Wi-Fi credentials and contact cards. Download as PNG or SVG.",
        "category": "generators",
        "tags": [
            "qr",
            "qrcode",
            "qr code",
            "barcode",
            "wifi"
        ],
        "icon": "qr-code",
        "needsBackend": false,
        "relatedModules": [
            "password-generator"
        ],
        "seoIntro": "QR codes are 2D barcodes that can store URLs, text, contact information or Wi-Fi credentials and be scanned instantly by any modern smartphone camera.\n\nThis tool generates QR codes locally in your browser and offers PNG or SVG download. No tracking, no logging, no third-party services.",
        "seoFaq": [
            {
                "q": "Is the QR code uploaded to a server?",
                "a": "No. Generation happens entirely in your browser."
            },
            {
                "q": "Which content types are supported?",
                "a": "Free text, URLs, Wi-Fi network credentials and vCard contact details. More presets are added over time."
            },
            {
                "q": "Can I print the QR code?",
                "a": "Yes. Use the SVG download for crisp printing at any size."
            }
        ]
    },
    "timestamp-converter": {
        "id": "timestamp-converter",
        "slug": "timestamp-converter",
        "title": "Unix Timestamp Converter",
        "description": "Convert between Unix timestamps and human-readable dates in any timezone, with millisecond precision.",
        "category": "converters",
        "tags": [
            "timestamp",
            "unix",
            "epoch",
            "date",
            "time",
            "iso 8601"
        ],
        "icon": "clock",
        "needsBackend": false,
        "relatedModules": [
            "unit-converter"
        ],
        "seoIntro": "Unix timestamps count seconds (or milliseconds) since 1970-01-01 00:00:00 UTC. They are the most common way computer systems represent points in time.\n\nThis tool converts between timestamps and human-readable dates in any IANA timezone. The current time is shown live and conversions happen instantly in your browser.",
        "seoFaq": [
            {
                "q": "What's the difference between seconds and milliseconds?",
                "a": "Plain Unix time is in seconds. Most languages and JavaScript's Date.now() use milliseconds. The tool auto-detects which one you pasted."
            },
            {
                "q": "What's ISO 8601?",
                "a": "An international standard for date/time strings, e.g. 2025-12-31T23:59:59Z. It is unambiguous and timezone-aware."
            },
            {
                "q": "Will my timezone be detected?",
                "a": "Yes. Your browser's IANA timezone is selected by default. You can change it from the dropdown."
            }
        ]
    },
    "unit-converter": {
        "id": "unit-converter",
        "slug": "unit-converter",
        "title": "Unit Converter",
        "description": "Convert between common units of length, mass, temperature, time and digital storage.",
        "category": "converters",
        "tags": [
            "unit",
            "convert",
            "length",
            "mass",
            "temperature",
            "data",
            "time"
        ],
        "icon": "ruler",
        "needsBackend": false,
        "relatedModules": [
            "base64"
        ],
        "seoIntro": "A simple, fast unit converter for everyday measurements: meters and feet, kilograms and pounds, Celsius and Fahrenheit, seconds, minutes, hours, and digital storage units from bytes to terabytes. All conversions run in your browser using exact factor tables.",
        "seoFaq": [
            {
                "q": "Are conversions accurate?",
                "a": "Conversions use IEEE-754 double precision and exact SI factors where applicable; rounding errors at extreme magnitudes are inherent to floating-point math."
            }
        ]
    },
    "whois": {
        "id": "whois",
        "slug": "whois-lookup",
        "title": "WHOIS Lookup",
        "description": "Look up the WHOIS registration data for any public domain \u2014 registrar, dates and nameservers.",
        "category": "networking",
        "tags": [
            "whois",
            "domain",
            "registrar",
            "expiration",
            "dns"
        ],
        "icon": "globe",
        "needsBackend": true,
        "relatedModules": [
            "dns-lookup",
            "tcp-port-check"
        ],
        "seoIntro": "WHOIS is the public registry that records who owns a domain name, when it was registered, when it expires and which nameservers are authoritative.\n\nThis tool queries the authoritative WHOIS server for the requested TLD and returns a parsed summary plus the raw response. Lookups are rate-limited to keep the service free.",
        "seoFaq": [
            {
                "q": "Why is some data redacted?",
                "a": "Since GDPR most registrars redact personal contact info from public WHOIS responses. Registrar, dates and nameservers are still available."
            },
            {
                "q": "Are all TLDs supported?",
                "a": "Most ccTLDs and gTLDs that publish a WHOIS server through IANA. A few TLDs (e.g. .au) require a different protocol and are not covered here."
            },
            {
                "q": "How fresh is the data?",
                "a": "Live from the registrar's WHOIS server, with a 10-minute server-side cache to reduce load."
            }
        ]
    },
    "xml-validator": {
        "id": "xml-validator",
        "slug": "xml-validator",
        "title": "XML Validator & Formatter",
        "description": "Validate and pretty-print XML in your browser using the DOMParser.",
        "category": "validators",
        "tags": [
            "xml",
            "validate",
            "format",
            "pretty"
        ],
        "icon": "code",
        "needsBackend": false,
        "relatedModules": [
            "json-validator"
        ],
        "seoIntro": "XML (eXtensible Markup Language) is a self-describing text format. This validator parses your XML using the browser's DOMParser, reports the first parse error, and indents the output for readability.",
        "seoFaq": [
            {
                "q": "Does it validate against an XSD?",
                "a": "Not yet \u2014 only well-formedness is checked."
            },
            {
                "q": "Is XML sent to a server?",
                "a": "No, parsing happens in your browser."
            }
        ]
    }
}