Vertical Text Formatter

Rearrange text into columns read from top to bottom, starting at the right of each page. Set the page's column count and the number of characters in each column; the result is editable plain text with your chosen separator.

Runs locally in your browser

Set the page and arrange the text

This formatter creates a grid of text characters, separators and line breaks. Each column fills downward before the next column starts to its left. Formatting runs in the browser without sending the input in formatting requests.

  1. Enter 甲乙丙丁, set Columns per page to 2 and Characters per column to 2, and keep | as the separator.
  2. Format vertically. The first visible row is 丙|甲| and the second is 丁|乙|, with the formatter's leading spaces and blank page spacing. Read the right column first to recover the original order.
  3. Copy the result or edit it in the output field. Changing the source, dimensions, separator or Chinese option clears the old result. Clear empties both text fields and keeps the settings.

How the grid treats text

Columns, page breaks and blank cells

The defaults are 24 columns per page and 19 characters per column. A line break starts a new column; blank lines and a final line break create empty columns. Short columns and incomplete pages are padded with fullwidth spaces. Full pages follow one another with blank-line spacing.

Width and height must be whole numbers from 1 to 200. Input is limited to 20,000 UTF-16 code units, the separator to 16 without control characters, and output to 500,000. The separator may be empty. Large padding or a long separator can reach the output limit even with short input.

Fullwidth characters and intact graphemes

Single-character ASCII letters and digits become fullwidth, for example A becomes A. The retained punctuation table includes ( → ︵, : → ‥, — → ┃ and … → ┆. Tabs are removed; CR and CRLF line endings become LF. Separator text is inserted literally after every cell, including the last cell in a row.

Intl.Segmenter keeps recognized grapheme clusters, such as emoji sequences and combining accents, in one cell. Compound clusters remain unchanged, so 1️⃣ is not changed to a fullwidth digit. A compatible browser is required. Fonts and emoji widths still affect visual alignment; this is not a professional vertical-typesetting engine.

Questions about vertical text

What does the Traditional Chinese option convert?

It applies the original limited character table without understanding words or context. For example, 汉语 becomes 漢語, while 头发 becomes 頭發, not 頭髮. Unlisted characters remain unchanged. It is not OpenCC, complete simplified-to-traditional conversion, Big5 encoding or Japanese old-form conversion.

Does copying retain a vertical writing mode?

The clipboard receives plain text with fullwidth characters, separators, padding and line breaks. It carries no CSS writing mode or font. Paste into a field that preserves spacing; automatic wrapping or a different font may change the appearance. Empty input and validation errors clear old output.

Recent tools: