Mask strings while keeping them readable
No uploads — everything runs locally in your browser

The String Obfuscator replaces characters with a masking character (an asterisk) while keeping the first and last parts readable. It is useful when you want to share a value’s shape—like its length and prefix— without exposing the full string.
Obfuscation is not encryption.
This tool is designed for redaction and safer sharing. If a value must remain secret, don’t paste it anywhere—use a secret manager, rotate the credential, or use dedicated tokenization.
If you’re dealing with developer strings often, you may also like our Text statistics (for counts and byte size) or Regex tester (to validate formats before you mask them).
Input: Lorem ipsum dolor sit amet, Keep first = 4, Keep last = 4, Keep spaces = Yes.
Result keeps the beginning and the end visible, but masks the middle. That’s usually enough to confirm you’re looking at the right string without exposing everything.
Input: sk_live_51ABCDEF1234567890. You can keep a short prefix and suffix to help support teams locate the correct credential.
If the key is truly secret, the safest practice is still not sharing it at all—masking is a convenience for debugging and communication.
Background: You need to show a vendor support engineer which token you used, but the token grants access.
Inputs: Keep first , Keep last , Keep spaces = No.
Result: You share something like while preserving the ends for identification.
Application: Vendor can locate the credential in logs without seeing the full secret.
Background: You’re preparing a screenshot for documentation or a bug report.
Inputs: Keep first , Keep last (so the domain remains readable), Keep spaces = No.
Result: The local-part becomes masked, while stays visible.
Application: Readers understand which domain is involved without exposing personal identifiers.
Background: A teammate needs to confirm the last digits used for verification.
Inputs: Keep first , Keep last , Keep spaces = Yes.
Result: Only the last four digits remain readable, which is often enough for identity checks.
Application: Safer collaboration without dumping a full phone number into chat history.
Background: You want to show a record identifier structure in a public issue.
Inputs: Keep first , Keep last , Keep spaces = No.
Result: The prefix remains visible (often encodes type or region), while the remainder is masked.
Application: Debug format issues. Combine with our UUID generator if you need test IDs.
Background: Error payload contains a secret header or cookie value.
Inputs: Keep first , Keep last , Keep spaces = No.
Result: Payload is readable in shape but not in content.
Application: You can publish the report without exposing credentials. For structured tokens, consider our JWT parser to inspect claims (still avoid pasting real secrets).
Think of the string as a list of characters. For each position we decide whether to keep the original character or replace it with a masking character .
Here is the total number of characters in the string, is “Keep first”, and is “Keep last”.
Obfuscation is reversible by design (you can still see parts). Hashing is one-way (useful for comparisons), and encryption is two-way (useful for storage and transport). This calculator is squarely in the “make it safer to share” category.
When in doubt, share less. Masking helps, but you should still avoid publishing unique identifiers if they could be used to locate a real person.
If you suspect a string is encoded (like Base64), decoding it may reveal more context—but be careful with secrets. Our Base64 String Encoder/Decoder can help with safe test data.
It reduces accidental exposure, but it’s not a security guarantee. If the value matters, treat it as a secret and avoid sharing it.
If , then most (or all) characters can remain visible. For short strings, keep fewer.
For human-readable phrases (names, sentences), keeping spaces helps readability. For secrets like tokens, spaces usually don’t exist—so it won’t matter.
Yes. The Share modal lets you optionally include inputs in the link. Only enable it if you are sure the string is safe to put in a URL.
No. The masking runs locally in your browser.
That’s the point: it helps you (or a teammate) confirm identity and format. If you need stronger privacy, set both values to .
Use a simple chronometer (stopwatch) to track elapsed time down to milliseconds. Runs locally in your browser.
Normalize email addresses to a standard format for easier comparison. Useful for deduplication and data cleaning. Runs locally in your browser.
Estimate the time needed to consume a total amount at a constant rate, and get an expected end time. Runs locally in your browser.
Parse and decode your JSON Web Token (JWT) and display its content. All computation runs locally in your browser.
Know which file extensions are associated to a MIME type, and which MIME type is associated to a file extension. Includes a full MIME types table.
Generate random Lorem Ipsum placeholder text with customizable paragraphs, sentences, and word counts. Runs locally in your browser.