OffTility

Regex Tester

Match highlighting and capture groups, computed off the main thread with a timeout. Nothing you type ever leaves this tab.

0 characters

Nothing you type here is sent anywhere.

What this tool does

Regex Tester runs a regular expression against a block of text and highlights every match directly in place, with capture groups listed alongside each one. It's built for the everyday work of writing and debugging a pattern — validating an email format, pulling numbers out of a log line, checking whether a URL matches what you expect — without guessing whether it's right.

Type a pattern and some text to test it against, and matches highlight automatically as you go.

How to use it

Enter a pattern (standard JavaScript regex syntax, without the surrounding slashes) and toggle case-insensitive, multiline, or dot-matches-newline as needed. Paste or type the text to test it against below. Matches highlight directly in the text, and a numbered list with each match's position and captured groups appears underneath.

Copy the match list or download it as a text file. Clear the input any time to start over.

Why nothing leaves your device

The text people test patterns against is often the real thing the pattern is eventually meant to run on in production — log lines that contain IP addresses or session identifiers, sample records with real customer data, config that shouldn't be pasted anywhere public. A server-backed regex tester means that sample text crosses the network before you've even confirmed the pattern works.

Matching runs in a Web Worker, entirely inside this browser tab — no server, no upload. Check your network tab while using it and you'll see no request carrying your pattern or your test text.

What this does well — and what it doesn't

Because matching runs in a background worker with a timeout, a pathological pattern — one that triggers catastrophic backtracking and would otherwise freeze a browser tab for minutes — gets caught and reported as "took too long" instead of hanging this page. That's a real, common failure mode with regular expressions, and this tool is built to fail safely when it happens rather than pretend it can't.

This uses standard JavaScript regex syntax and semantics — the same engine your code will actually run the pattern with if you're writing for JavaScript, but not identical to PCRE, Python's `re`, or other regex flavors, which differ in some lookaround and Unicode behavior. Matching is capped at 5,000 results to keep the interface responsive on very large inputs; beyond that, the list is truncated but still tells you it happened.