Text chores are the kind of thing you want to finish in ten seconds. Yet most sites you find by searching "JSON formatter" or "character counter" send what you type to a server for processing. API responses, config files, unpublished drafts, a list with customer names — the text you actually need to format is usually the text you would rather not paste into somebody else's box.
OFFiler's text tools run entirely in your browser. What you type stays in the page and no request is made. Below: what each of the nine tools is for, how they work, what sizes they handle, and the questions people ask most.
Choosing the Right Text Tool
Counting and comparing
Character Counter shows characters, characters excluding spaces, words, lines, and paragraphs at once. For languages that do not separate words with spaces, such as Japanese, the character count is the meaningful figure; for English it counts whitespace-separated tokens as words. Useful for submissions with a strict limit or for drafting a post.
To see what changed between two texts, use Text Diff. It computes a line-level difference using the longest common subsequence algorithm and colour-codes added and removed lines — good for comparing two versions of a config file, checking a contract before and after revision, or lining up two snippets of code.
Formatting and rewriting
JSON Formatter expands JSON that has been squashed onto one line into properly indented output, and can minify it back the other way. When the syntax is broken it reports the error together with the line and column where it occurred, so you can find the problem immediately — handy for reading an API response or hunting a typo in a config file.
For rule-based bulk edits, use Regex Replace. It supports the g, i, m, and s flags, highlights matches as you type, shows the match count, and previews the replacement result so you can confirm nothing unintended was caught before you use it.
Text Transform handles inconsistent notation: upper and lower case, title case, conversion to camelCase, PascalCase, snake_case, kebab-case, and CONSTANT_CASE, full-width to half-width and back, unifying line endings (CRLF / LF / CR), and trimming or collapsing whitespace.
Working with lines, and somewhere to write
For list-shaped data, Line Tools does the heavy lifting: remove duplicates, sort ascending, descending, or randomly, drop empty lines, trim each line, add a prefix or suffix to every line, and add or strip line numbers. Deduplicating a list of email addresses, or wrapping a pasted list in quotes to make an array, becomes a couple of clicks.
Text Editor is a plain scratch space for a quick draft or somewhere to park pasted text. Drop a file in to open it, edit, and save the result back out as a text file, with a live character count alongside.
Encoding and decoding
Base64 Encode / Decode handles both text and binary files. It supports URL-safe output (+ becomes -, / becomes _) and can generate a Data URL so an image can be embedded directly in HTML or CSS. When a decoded result turns out to be an image, it is previewed on the spot so you can confirm the decode worked.
URL Encode / Decode converts percent-encoding in both directions for URLs containing non-Latin characters or symbols. It can also break a query string apart into a key-value list, which makes it easy to see what is buried in a long URL full of tracking parameters.
Worth stating plainly: Base64 is not encryption. It is an encoding anybody can reverse, so it cannot be used to keep anything secret.
How Browser-Only Text Processing Works
Your input stays inside the page
Everything here is implemented in JavaScript running in your browser. Diffing, regular expressions, JSON parsing — all of it executes on your device. There is no code path that transmits what you typed, and nothing is logged on a server.
If you want to check, open the Network tab in your developer tools and type or convert something. You will not see a request carrying your input. The results disappear as soon as you close the page.
That is the point of doing it this way: it lets you work on the material you cannot paste into an external service — config containing API keys, an internal customer list, an unpublished draft, a fragment of a CSV with personal data in it.
Chaining tools together
The text tools hand their output straight to one another. You can deduplicate a pasted list in Line Tools, unify its casing in Text Transform, and finish it in the editor without copying and pasting between steps.
Text files are accepted up to 10 MB each. Highlighting and diff rendering can get heavy on extremely long documents, so working on the section you actually need keeps things responsive.
Formats and Limits
- Input
- Paste directly or load a text file. The Base64 tool also accepts binary files such as images
- Output
- Copy to clipboard, save as a text file, or a Data URL from the Base64 tool
- File size
- Up to 10 MB per text file
- Encoding and line endings
- UTF-8 throughout. CRLF, LF, and CR are detected, and Text Transform can convert between them
- Browser requirements
- Current Chrome, Edge, Safari, and Firefox. Nothing special is required, and they work on phones too
- Cost and sign-up
- Free. No account, no sign-in, and no usage cap
Text Tools FAQ
Is the text I type sent to a server?
No. Everything is processed by JavaScript in your browser and your input never leaves the page. Open the Network tab in your developer tools while you work and you can confirm that no request carries it anywhere.
Is it safe to paste API keys or personal data?
Processing stays on your device and nothing is transmitted, which makes it far safer than a typical online tool. On a shared computer, still take the usual precautions: close the page when you are done and be mindful of what is left on your clipboard.
Does the counter handle Japanese correctly?
Yes for characters — they are counted as typed. The word count works by splitting on whitespace, so it is not meaningful for languages that do not use spaces between words. For Japanese text, use the character count (or the count excluding spaces) instead.
My JSON is invalid and I cannot see why.
The formatter reports the parse error along with the line and column where it happened. The usual culprits are a trailing comma, unquoted keys, single quotes instead of double, or comments — JSON does not allow comments at all.
At what granularity does the diff work?
Line by line. It matches identical lines using the longest common subsequence algorithm and colour-codes what was added or removed. When only part of a line changed, that line appears as a removed/added pair rather than a character-level highlight.
Does Base64 hide the contents of my data?
No. Base64 is an encoding, not encryption, and anyone can reverse it. It exists to carry binary data as text, and offers no confidentiality. If you need the contents protected, use real encryption such as a password-protected AES-256 ZIP.
My regular expression is not matching what I expect.
Matches are highlighted live with a count, so start by looking at what it is actually hitting. Enable g to replace every occurrence, i to ignore case, m to make ^ and $ apply per line, and s to let . match newlines as well.
Can it handle large files?
Text files load up to 10 MB. Highlighting and diffing get slower as the document grows, so for logs running to tens of thousands of lines, cut out the section you care about first.
Do they work offline?
Yes. After the first visit the app is cached as a PWA. Text tools need no external resources at all, so nothing is missing when you are offline.
Text Terms, Briefly
- Line endings (CRLF / LF / CR)
- The control characters that end a line. Windows generally uses CRLF, macOS and Linux use LF. A mix of both is a common reason diffs look wrong.
- Full-width / half-width
- Two widths of the same character used in Japanese text environments. A full-width "A" and a half-width "A" are different characters, so notation often needs unifying.
- LCS (longest common subsequence)
- An algorithm that finds the longest sequence common to two inputs. It is how the diff identifies which lines did not change.
- Regex flags
- Modifiers that change how a pattern behaves. Supported here: g (all matches), i (ignore case), m (multiline), s (dot matches newlines).
- Base64 / Data URL
- An encoding that represents binary data as text, and the URL-shaped notation used to embed it. Neither is encryption — both are trivially reversible.
- Percent-encoding
- The scheme that replaces characters not allowed in a URL with sequences such as %E3%81%. URL encoding and decoding move between the two forms.