User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
0 / 10,000
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Redacted text uses solid black rectangles (Unicode Full Block U+2588 β–ˆ) to obscure content. Government agencies, legal departments, and FOIA responses rely on this convention to comply with privacy statutes while preserving document structure. A manual approach - replacing each character by hand - introduces errors: inconsistent bar widths expose word length, partial coverage leaks character ascenders, and copy-paste from images fails entirely. This tool maps each source character to its corresponding block element with precise width matching, producing output that is both visually uniform and structurally consistent across monospaced and proportional typefaces.

Two output modes exist. The Unicode mode generates copyable text using U+2588 FULL BLOCK characters, preserving spaces and line breaks for direct paste into documents, emails, or chat. The image mode renders redaction on a Canvas element with configurable font size, producing a downloadable PNG where character geometry is permanently obscured. Note: Unicode block output assumes the recipient's font renders β–ˆ at full em-width. Some CJK or decorative fonts may produce gaps. For guaranteed visual fidelity, use the PNG export.

black bar text redacted text generator censored text unicode block text text redactor classified text maker

Formulas

The redaction mapping function transforms each character in the source string S to its block equivalent based on the selected mode m.

redact(S, m) =
{
S.replace(/\S/g, β–ˆ)   if m = FULLS.replace(/\w+/g, w β†’ β–ˆlen(w))   if m = WORD[REDACTED]   if m = LABELS[0] β‹… β–ˆlen(S) βˆ’ 1   if m = PARTIAL

Where S is the input string, m is the redaction mode, w is an individual word token, and len(w) returns the character count of token w. The β–ˆ symbol represents Unicode code point U+2588 (FULL BLOCK). In PARTIAL mode, only the first character of each word remains visible. Whitespace characters (spaces, tabs, newlines) are always preserved to maintain document structure.

For PNG export, the canvas rendering computes bar width as: barWidth = measureText(w).width, and draws a filled rectangle at the text baseline offset by the font's ascent metric.

Reference Data

Unicode CharCode PointNameTypical Use
β–ˆU+2588Full BlockComplete character redaction
β–‰U+2589Left Seven Eighths BlockNear-full redaction
β–ŠU+258ALeft Three Quarters BlockPartial cover
β–‹U+258BLeft Five Eighths BlockDecorative redaction
β–ŒU+258CLeft Half BlockHalf-width censor
▍U+258DLeft Three Eighths BlockThin bar effect
β–ŽU+258ELeft One Quarter BlockMinimal obstruction
▏U+258FLeft One Eighth BlockLine/border element
▐U+2590Right Half BlockRight-aligned censor
β–‘U+2591Light ShadePartial/light redaction
β–’U+2592Medium ShadeMedium redaction hint
β–“U+2593Dark ShadeHeavy but visible redaction
⬛U+2B1BBlack Large SquareEmoji-style censor
β– U+25A0Black SquareGeometric censor mark
[REDACTED] - Text PlaceholderLegal/FOIA standard label
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆU+2588 Γ— nContinuous Block RunWord-length redaction bar
XΜΆXΜΆXΜΆU+0336 combiningStrikethrough overlayVisible-but-crossed text
πŸ”’U+1F512Lock EmojiInformal content lock indicator

Frequently Asked Questions

The β–ˆ (U+2588) character relies on the rendering font having a full-width glyph. Proportional fonts like Times New Roman or some system UI fonts may render it narrower than the em-square, creating visible gaps between consecutive blocks. To guarantee seamless bars, paste the output into a context using a monospaced font (Consolas, Courier New, SF Mono) or use the PNG image export, which renders bars at exact measured width regardless of the recipient's font configuration.
No. The Unicode output performs a destructive replacement - each non-whitespace character is substituted with U+2588. The original character data is not embedded, encoded, or recoverable from the output string. However, the word-level mode preserves word boundaries (spaces), which reveals word count and approximate length. If this metadata is sensitive, use FULL mode which also redacts punctuation boundaries, or use the [REDACTED] label mode which eliminates all length information.
Partial mode exposes only the first character of each word token (matched by the regex /\w+/g) and replaces all subsequent characters with β–ˆ blocks. For example, "Confidential Report" becomes "Cβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Rβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ". This preserves enough structure for the reader to infer context while obscuring the full content. Be aware that for short words (2-3 characters), partial mode may reveal a disproportionate percentage of the content.
The tool enforces a 10,000-character limit. Unicode replacement operates in O(n) time where n is the string length, so text processing remains under 1ms for typical inputs. The PNG canvas export is the heavier operation: rendering 10,000 characters at 16px font size produces a canvas approximately 3,000Γ—800 pixels, which stays well within browser memory limits (~16MB for a 32-bit RGBA buffer). Beyond 10,000 characters, line-break computation and canvas height grow linearly.
No. The PNG is generated via Canvas.toBlob(), which produces a raw pixel bitmap. No EXIF, XMP, or tEXt chunks are written. The canvas only receives drawRect() calls for bars and optionally visible characters - the source string is never passed to fillText() in FULL redaction mode. The resulting file contains only opaque black pixels and white background with no recoverable text data.
Strikethrough (U+0336 combining character or CSS text-decoration: line-through) draws a line through text but leaves the original glyphs fully visible and selectable. It is a formatting annotation, not a redaction. Black bar replacement using β–ˆ destroys the source characters at the string level. CSS-based approaches (e.g., background-color: black with matching text color) are trivially defeated by selecting and copying the text. This tool produces genuine character-level substitution.