Three different things on a screen
A sentence may occupy four phone lines or two monitor lines without changing stored text. Explicit breaks can change the sequence; copying into a field preserving newlines reveals them.
Rich-document paragraphs are structural elements with styles and spacing. Plain text needs a convention. Ask which separators exist, how they are interpreted and which indicator you read. Printed, file and wrapped field lines need not correspond.
LF and CRLF
LF and CR are controls. Files use LF alone or CRLF; MDN explains \n and \r. These are readable notations, not literal letters to count.
Our engine converts CRLF and isolated CR to LF, giving equal editorial totals for these conventions. Original byte lengths may differ. Count normalization does not prove equal upload size; measure actual outgoing bytes. See characters and UTF-8 bytes.
Site lines and paragraphs
A line is a segment separated by an explicit normalized newline. Empty text has zero lines; literal Luce has one; a final newline creates a second empty segment without adding a word or paragraph.
Paragraphs are blocks separated by blank lines. One internal break does not create two paragraphs. This plain-text convention differs from editors treating each Enter as a paragraph. Record the convention before reconciling numbers rather than merely changing expected totals.

Luce and blu examples
The literal Italian Luce blu has eight characters and two words. Replacing its space with LF gives seven characters, the four letters of Luce and three of blu, while retaining two words.
Two LF controls still give seven characters and two words but three lines and two paragraphs. Structure can change without new words. Insert actual controls when reproducing: literal \n supplies a backslash and letter, a different sample.
Resizing and visual wrapping
Distinguish visible lines from numeric indicators when resizing. CSS white-space influences whitespace rendering, so screenshots do not establish stored characters.
Measure one unchanged sentence before and after resizing. Do not insert spaces to imitate alignment. Different copied results may reflect partial selection, explicit breaks or source copy transformations. Investigate these before adjusting figures.
Imported breaks
PDF extraction reconstructs text from positioned fragments. Breaks after every printed line can help comparison but hinder editing. DOCX structure and table-cell separators differ again.
Inspect a page containing heading, paragraph and table before joining. Separate real boundaries from layout. See multicolumn PDFs for reading order. Separator changes cannot recover missing sentences; verify completeness and order first.
Requirements expressed in characters or lines
Follow recipient definitions. Our character analysis excludes breaks and treats tabs as one space. A system counting controls or string units can differ; no fixed conversion factor applies without actual separators.
Twenty lines may mean prescribed font, size and width, or technical file lines. Newline counting cannot replace layout inspection in the first case. Agree final-empty-line treatment in the second. Clarify specifications before deleting content to resolve formatting ambiguity.
Locate disagreements
Test samples first without and then with one final newline when word totals match but lines differ. This isolates convention. Changed words suggest merged joins after deleting breaks without spaces.
Compare long documents blockwise and find the first unexpected boundary: missing blank lines, table-to-list conversions or quoted breaks. Repair that point rather than globally substituting until a total looks plausible.
Same words, different separators
| String notation | Site characters | Lines | Paragraphs | Original UTF-8 bytes |
|---|---|---|---|---|
| Luce blu | 8 | 1 | 1 | 8 |
| Luce\nblu | 7 | 2 | 1 | 8 |
| Luce\r\nblu | 7 | 2 | 1 | 9 |
| Luce\n\nblu | 7 | 3 | 2 | 9 |
| Luce\n | 4 | 2 | 1 | 5 |
Sources and checks
- MDN: CRLF · Carriage return and line feed terminology and notation
- MDN: white-space · CSS whitespace and line-break rendering