Skip to main content

Free Line Numbering Tool – Add Numbers to Text

Add line numbers to text online for free. Multiple formats, custom start number, zero padding, and skip empty lines.

Written & reviewed by Helperzy Editorial Team · Updated July 2026

5 FormatsCustom StartZero PaddingReal-timeFree

Input

Numbered Output

100% Private

All processing happens locally in your browser.

How to Use Add Line Numbers

1

Enter Text

Paste the code, passage or list you want numbered. Output rebuilds as you type, so inserting a line renumbers everything below it automatically.

2

Configure

Pick one of the five prefix styles, set the start number to match your source if this is an excerpt, and enable zero padding plus skip-empty-lines as needed.

3

Copy Result

Copy or download the numbered text for your review comment, handout or contract. Remember to strip the prefixes before pasting numbered code back into an editor.

What Adding Line Numbers Does and How the Numbering Is Applied

This puts a sequential number in front of every line of your text. It sounds trivial, and numbering ten lines by hand is trivial — until you insert a line in the middle and have to renumber everything below it. That is the problem this solves. Developers use it to make a pasted snippet referable, so a review comment can say line 14 rather than describing the location in prose. Teachers number a poem or a prose passage so a whole class can look at the same line. Technical writers and legal drafters number clauses for precise citation. Anyone writing instructions gets steps people can point at. The process splits your text on line breaks, walks the resulting array, and builds a prefix for each entry from your chosen settings. Five prefix styles are available: a number with a full stop, with a closing bracket, with a colon, wrapped in square brackets, or bare with nothing attached. The start value is yours to set, so an excerpt can carry the numbers it had in the original document rather than restarting at 1. Zero padding calculates the width of the highest number in the set and pads every other number with leading zeros to match, which keeps the text edge aligned. The skip-empty-lines option leaves blank lines unnumbered so gaps between sections do not consume a count. Output rebuilds as you type, so editing the text renumbers everything immediately. A worked example. Paste four lines: import os, then a blank line, then def main():, then return 0. Set the format to the bracketed style, the start number to 8, and turn on skip empty lines. The output reads [08] import os, then the blank line untouched, then [09] def main():, then [10] return 0. Three content lines received numbers 8, 9 and 10, the blank line was skipped rather than becoming number 9, and zero padding made 8 and 9 two digits wide so they line up with 10. Turn skip-empty off and the blank line takes number 9, pushing the last line to 11. Specific situations. A developer pasting a 60-line function into a bug report numbers it so the reviewer can reference the exact failing line. An English teacher numbers a 28-line sonnet for a close-reading exercise where pupils cite line numbers in their answers. A contract drafter numbers 40 clauses so amendments can refer to clause 23 unambiguously. A trainer writing an installation guide numbers 15 steps so support calls can start with which step failed. A researcher quoting an excerpt from page 4 of a transcript sets the start number to 112 so the numbering matches the source document. A translator working through a subtitle file numbers each caption line so the client can flag corrections by number instead of quoting whole lines of text back in an email. Turn zero padding on whenever the text runs past nine lines, because otherwise single-digit numbers sit a character short and the whole block looks ragged. Set the start number rather than accepting 1 when your text is an extract, since mismatched numbering causes more confusion than no numbering at all. The one real gotcha is that the numbers become ordinary text in the output. Paste numbered code straight back into an editor and it will not compile, because every line now begins with a prefix the language does not understand. Strip the prefixes first, or keep the numbered version only for the document where you are discussing the code rather than for the file you actually run. Processing runs in your browser with no length limit, and nothing you paste is uploaded, stored or logged.

Example: Add Line Numbers

Input

Four lines (import os / blank / def main(): / return 0) · Format [n] · Start at 8 · Zero padding on · Skip empty lines on

Result

[08] import os · (blank line, unnumbered) · [09] def main(): · [10] return 0

Three content lines take numbers 8, 9 and 10 while the blank line is skipped; padding matches the two-digit width of the highest number so 08 and 09 align with 10.

Frequently Asked Questions – Add Line Numbers

Yes. Set any starting number in the 'Start From' field, which is useful when your text is an excerpt that continues from an earlier section of a larger document. The line numbers will then match the original source instead of always beginning at 1.