Unformat.online
More tools
Clean Text
Strip smart quotes, zero-width characters, non-breaking spaces, and invisible Unicode from any pasted text.
Markdown Viewer
Live split-view editor and renderer — edit on the left, preview on the right.
Format JSON
Prettify or minify JSON. Auto-fixes single quotes, trailing commas, and unquoted keys.
Format SQL
Format SQL for MySQL, PostgreSQL, BigQuery, T-SQL, and more — uppercase keywords, proper indentation.
Format YAML
Format and validate YAML. Catches indentation errors in Kubernetes, Docker Compose, and GitHub Actions files.
Format XML
Indent and pretty-print XML. Works with SOAP, RSS, Maven POM, Android manifests, and SVG.
FileSQL
Drop a CSV or JSON file and query it with SQL instantly — no upload, no server.
Text Diff Checker
Compare two texts, JSON payloads, or config files and see exactly what changed, line by line.
Log File Viewer
Open multi-gigabyte log files instantly — chunked indexing and virtual scrolling handle 10GB+ files without freezing your tab.
JWT Debugger
Decode JWTs instantly — view all claims, check expiry, and see the algorithm. Token never leaves your browser.
Shredder
Remove EXIF, GPS, and author metadata from images and PDFs. Redact secrets from text and log files.
SSL Certificate Checker
Check any domain's SSL/TLS certificate — expiry, issuer, and Subject Alternative Names.
Base64
Encode text or files to Base64, or decode Base64 strings and preview images inline.
UUID Generator
Bulk-generate cryptographically random v4 UUIDs using crypto.randomUUID(). Copy one or all at once.
URL Encode / Decode
Encode URLs or decode percent-encoded strings like %20, %3D, %26 — instantly.
CronScope
Paste a cron schedule and see every run on a 12-month calendar. Never misread a cron expression again.
Regex Tester
Test regex patterns against sample text with live-highlighted matches, or pick from a library of ready-made patterns — no regex knowledge required.

Regex Cheat Sheet

A complete regex syntax reference — character classes, anchors, quantifiers, groups, lookaround, and flags. Click Try it on any row to open it live in the Regex Tester.

Character Classes

Match a single character from a category or a custom set.

SyntaxMatches 
.Any character except a newline.Try it →
\dAny digit (0-9).Try it →
\DAny non-digit character.Try it →
\wAny word character: letters, digits, or underscore.Try it →
\WAny non-word character.Try it →
\sAny whitespace: space, tab, or newline.Try it →
\SAny non-whitespace character.Try it →
[abc]Any one character from the set — here, a, b, or c.Try it →
[^abc]Any character NOT in the set.Try it →
[a-z]Any character in the range a to z.Try it →

Anchors

Match a position in the text rather than a character.

SyntaxMatches 
^Start of the string — or start of each line, with the Multiline flag.Try it →
$End of the string — or end of each line, with the Multiline flag.Try it →
\bA word boundary — the position between a word character and a non-word character.Try it →
\BNOT a word boundary.Try it →

Quantifiers

Control how many times the preceding token can repeat.

SyntaxMatches 
*0 or more of the preceding token.Try it →
+1 or more of the preceding token.Try it →
?0 or 1 of the preceding token (makes it optional).Try it →
{n}Exactly n times.Try it →
{n,}n or more times.Try it →
{n,m}Between n and m times, inclusive.Try it →
*? +? ??Lazy (non-greedy) versions of *, +, and ? — match as few characters as possible instead of as many.Try it →

Groups & Alternation

Group parts of a pattern together, or match one of several options.

SyntaxMatches 
(...)Capturing group — remembers the text it matched so you can extract it.Try it →
(?:...)Non-capturing group — groups a pattern without remembering the matched text.Try it →
(?<name>...)Named capturing group — like (...), but accessible by name instead of position.Try it →
|Alternation — matches whatever is on either side of it (like OR).Try it →
\1Backreference — matches the exact same text that capturing group 1 already matched.Try it →

Lookaround

Zero-width assertions — check what's nearby without including it in the match.

SyntaxMatches 
(?=...)Positive lookahead — matches only if followed by the pattern, without consuming it.Try it →
(?!...)Negative lookahead — matches only if NOT followed by the pattern.Try it →
(?<=...)Positive lookbehind — matches only if preceded by the pattern.Try it →
(?<!...)Negative lookbehind — matches only if NOT preceded by the pattern.Try it →

Flags

Modifiers placed after the closing slash of a regex (e.g. /pattern/gi) that change how it matches.

SyntaxMatches 
gGlobal — find all matches instead of stopping at the first one.
iCase-insensitive — ignore uppercase/lowercase differences.
mMultiline — makes ^ and $ match the start/end of each line, not just the whole string.
sDot matches newline — makes . also match line break characters.
uUnicode mode — treats the pattern as full Unicode code points.
ySticky — matches only starting at the exact lastIndex position, without scanning ahead.

Escaping Special Characters

These characters are special to regex — prefix any of them with a backslash to match them literally: . * + ? ^ $ { } ( ) | [ ] \

SyntaxMatches 
\.Escapes a special character so it matches literally — here, a literal dot.Try it →