REPRODUCIBLE EXAMPLES
Text cleanup test cases
See what changes, what stays and where automatic cleanup needs human judgment.
By Textidy · Updated
These twelve synthetic cases are checked against Textidy's transformations before release. They are a small regression collection, not a benchmark proving superiority over other tools. Each case includes the settings that matter and a link to load that sample into the matching editor.
Invisible characters are labelled here as ⟦U+200B⟧, ⟦U+00A0⟧ and ⟦U+200D⟧. The downloadable fixtures and tool inputs contain the actual characters. The rich-text case shows the plain-text alternative; destination formatting needs a separate paste check.
Download all cases as JSON · Read our testing method
You may reuse these original synthetic examples and expected outputs under CC0 1.0. Read the CC0 terms. This applies to the fixture data, not third-party libraries or the site's source code.
Chat framing and numbered steps
Natural prose removes recognised boundary chat paragraphs and simple bullet markers. Numbered steps retain their order.
Input
Sure! ## Update - The draft is ready. - The references are attached. 1. Review the draft. 2. Approve the release. I hope this helps!
Expected text output
Update The draft is ready. The references are attached. 1. Review the draft. 2. Approve the release.
Punctuation with protected code
Em-dash replacement is opt-in. Code and blockquote punctuation remain; Markdown markers are removed. Review whether each comma fits the sentence.
Input
A useful change—when reviewed. `a—b` > A quoted—phrase
Expected text output
A useful change, when reviewed. a—b A quoted—phrase
Wrapped PDF paragraphs
Blank lines preserve paragraph boundaries. Missing paragraph boundaries cannot be inferred reliably.
Input
A paragraph copied from a PDF can wrap at every printed line. Keep the next paragraph separate from the first.
Expected text output
A paragraph copied from a PDF can wrap at every printed line. Keep the next paragraph separate from the first.
Optional hyphen repair
This is an intentional counterexample: document is repaired but well-known loses a meaningful hyphen. Review joined words; the option is off by default.
Input
A docu- ment contains a well- known example.
Expected text output
A document contains a wellknown example.
An address is not a paragraph
An address or poem can need every line break. Default line joining cannot identify this intent; keep the original or edit only prose excerpts.
Input
Alex Example 12 Sample Street Sydney
Expected text output
Alex Example 12 Sample Street Sydney
Restore a missing separator
The first row is the header. A missing separator and uneven spacing are repaired without adding cell values.
Input
| Name|Count | | A|2|
Expected text output
| Name | Count | | ---- | ----- | | A | 2 |
Extra data must not disappear
Three data cells under two headings stop conversion. Correct the source; extra cells are never discarded.
Input
| Name | Count | | A | 2 | extra |
Expected behaviour
Conversion stops: correct the uneven row before copying.
A pipe inside code
A pipe inside a complete code span is escaped for a GFM table. An unescaped pipe in ordinary text is still a cell boundary.
Input
| Value | | `a|b` |
Expected text output
| Value | | ------ | | `a\|b` |
Links and code survive
Default plain-text conversion keeps link destinations and code contents. It does not validate the source.
Input
## Notes Read [the source](https://example.com/source). Keep `user_id` unchanged.
Expected text output
Notes Read the source (https://example.com/source). Keep user_id unchanged.
Headings, links and a table
The shown expected output is the plain-text clipboard alternative. Formatted copying additionally supplies HTML headings, emphasis, links, numbering and a table. Destination appearance must be checked.
Input
# Textidy paste test A **bold** note with [a reference](https://example.com). 1. Review 2. Publish | Name | Count | | --- | --- | | A | 2 |
Expected text output
Textidy paste test A bold note with a reference (https://example.com). 1. Review 2. Publish Name Count A 2
Hidden space versus non-breaking space
Select U+200B to remove zero-width spaces and U+00A0 to replace non-breaking spaces with ordinary spaces. Removal can join words.
Input
hidden⟦U+200B⟧space and keep⟦U+00A0⟧together
Expected text output
hiddenspace and keep together
Keep emoji joiners
U+200D joins parts of the emoji. It is protected even if requested for removal.
Input
Developer: 👩⟦U+200D⟧💻
Expected text output
Developer: 👩⟦U+200D⟧💻