Decide what counts as extra
Double spaces can be mistakes in ordinary Italian prose but intentional indentation or conventions in code, tables and transcription. Identify type and final format first.
A narrow change collapses repeated U+0020 while initially retaining tabs and newlines. Tabs can look wide, blank lines separate blocks and nonbreaking spaces hold pairs together. Actual code points determine treatment, not gaps alone.
Fifteen, eleven and ten characters
Literal Italian prima dopo has fifteen characters and two words. Outer trimming gives eleven; reducing the internal pair too gives ten. Words stay two.
These are distinct transformations. Five fewer characters is not a summary and need not change word limits. Use character counting for the appropriate effect and inspect resulting prose rather than assuming proportional statistic reductions.
Document edges versus each line
JavaScript trim() removes whitespace from both string ends. Applied to an entire document, it may preserve middle indentation that per-line trimming removes.
List-edge spaces can harm matching; meaningful indentation needs protection. Test first, middle and final lines. Our deduplication edge option affects comparison keys while retaining first input text rather than globally cleaning output.

Whitespace is broader than a space
JavaScript regex \s includes whitespace and line terminators. Collapsing every run can flatten paragraphs and tabs unintentionally.
Read “normalize all spaces” scopes too. Test two paragraphs, tab and space pair if unclear, predicting every result. One shorter line is not improvement when section or column structure mattered.
Tabs are not fixed space counts
Tab width depends on display stops. Replacing tabs with spaces can lose alignment but retain boundaries; deletion can merge cells. Test three-field lines against destination requirements.
Our analysis treats each tab as one space without claiming file rewriting. Preserve table fields rather than imitation alignment. See CSV text for structural separators and quotes; prose and archive tasks differ.
Other separators may look ordinary
If ordinary-space replacement finds nothing, isolate and identify the intervening character. Do not broaden deletions blindly; see nonbreaking spaces.
Conversion may aid list comparison but allow unwanted print breaks. Deleting can fuse numbers and units. Choose the needed final separator instead of minimizing characters at the expense of clarity.
Rendering may hide repeated spaces
Browsers may collapse source spaces visually, while preformatted text exposes them. CSS white-space controls this; screenshots cannot establish source counts.
Compare actual strings or visible separators. Reduced counts with unchanged appearance may reflect hidden repeats; changed width may reveal altered structure. Inspect joins and destination suitability, not compactness alone.
Post-change checks
Collapsing ordinary repeated spaces should preserve prose words. Fewer words suggest fusion; changed lines and paragraphs suggest newline matching. These indicators help diagnose long copies.
Review code, preformatted quotations, addresses, signatures and tables. Record exact transformations, for example consecutive U+0020 reduced with LF and tabs retained. Generic “cleaned” labels are not reproducible. Repair exceptions before applying broadly.
Edges and internal spaces differ
| Version | Characters | Words | Change |
|---|---|---|---|
| ␠␠prima␠␠dopo␠␠ | 15 | 2 | None |
| prima␠␠dopo | 11 | 2 | Four outer spaces removed |
| prima␠dopo | 10 | 2 | One internal space also removed |
Sources and checks
- MDN: String.trim() · Whitespace removal at string edges
- MDN: Character class escapes · Whitespace and line terminators included in \s
- MDN: white-space · CSS whitespace and line-break rendering