Request a Review
Japanese UI & UX Writing · Data Tables · SaaS

Japanese Data Table and Grid Localization:
Column Headers, Filters, and Bulk Action Copy

The data table is the densest, most-used surface in most B2B SaaS products — and the one teams localize last. Column-header concision and wrapping, sort and filter control copy, the 絞り込み vs フィルター decision, bulk-action button phrasing, empty and loading states, pagination labels, and number/date columns each carry conventions Japanese business users expect. This article covers the table-level decisions that decide whether your grid reads as a localized product or a translated one.

Munehiro Hiraki
Munehiro Hiraki
Japanese Localization QA Specialist
May 31, 2026 12 min read Japanese UI & UX Writing
Quick Answers
Should a filter control be labeled 絞り込み or フィルター in a Japanese data table?
Both are used, but 絞り込み reads as more natively Japanese for narrowing results, while フィルター is recognized as a borrowed term. Pick one per product and apply it consistently — mixing the two across tables signals careless localization.
How should English column headers be handled in Japanese tables?
Japanese headers need to be concise and tested for line-wrapping, since kanji-heavy labels break differently than English. Shorten where possible and control wrapping so headers don't push column widths or break mid-word.
What's the hardest part of localizing a data table?
The many small states — bulk-action copy, selection states, empty/no-match/loading messages, and pagination with number and date columns. Tables read as "translated" when these secondary states are left in awkward or untranslated form.

TL;DR

Data tables are the densest UI surface in B2B SaaS and the one most teams localize last. Japanese tables have constraints English tables do not: wider characters force shorter column headers, the absence of spaces creates broken line wraps (最終ログ / イン日時), and control copy follows two decades of Japanese business-software convention — 絞り込み for filtering, 並び替え for sort, 件 as the row counter. Bulk-action buttons, empty-vs-no-match states, and pagination labels each have established Japanese forms that literal translation misses. This article covers the table-level decisions that decide whether your grid reads as localized or translated.

Key Takeaways

  • Japanese column headers must be shorter — characters are wider, so 最終更新日時 is dropped to 更新日 unless the column truly shows a timestamp. Prefer dense kanji compounds over katakana phrases.
  • Header line breaks must be controlled — Japanese has no spaces, so a header can wrap mid-word (最終ログ / イン日時). Design the break point or keep it to one line.
  • 絞り込み beats フィルター for general enterprise SaaS — and フィルタリング is never a control label. Match the term Japanese business software has used for twenty years.
  • Bulk actions name the verb with a 件 count — 選択した3件を削除, not a literal "Delete selected (3)". Reserve 一括 for when bulk-ness is the actual point.
  • Empty, no-match, and loading are three states, not one — データがありません ≠ 条件に一致するデータがありません ≠ 読み込み中. Conflating them makes users think their data is gone.

Why Tables Are the Hardest Surface to Localize Well

Most localization effort goes to the surfaces that are easy to see: the marketing site, the onboarding flow, the settings pages. The data table gets localized last because it is buried inside the product, it is generated by a component library rather than written as copy, and it looks "done" the moment the column headers are translated. But the table is where power users spend most of their working day. A finance analyst who lives in an exports grid or a CS lead who works a tickets table sees your localization quality more than any other screen in the product.

Tables are also uniquely hostile to literal translation. English table UI is built around English's typographic properties: short words, spaces that allow clean wrapping, and a counting grammar that needs no measure words. Japanese has none of these. Characters are roughly twice the width of Latin characters, so a header that fit comfortably in English now overflows its column. There are no spaces, so the browser will happily break a header between any two characters. And Japanese counts rows with a measure word — 件 — that has no English equivalent, so the natural phrasing of every count, selection, and pagination label changes.

This means table localization is not a translation pass. It is a re-layout. The vocabulary, the abbreviation strategy, the line-break control, and the count grammar all have to be decided deliberately. When they are decided by default — by translation memory and a component library's English-shaped layout — the result is the half-localized grid that Japanese enterprise users recognize on sight.

~2×
The width of a Japanese character versus a Latin character — why headers overflow after translation
The measure word for rows and records that reshapes every count, selection, and pagination label
3
Distinct table states — empty, no-match, and loading — that literal translation collapses into one

Column Headers: Concision and Line Wrapping

Column headers are the single most space-constrained text in any product. In English you have a handful of characters before the header overflows or forces the column wider. In Japanese, because each character is wider, you have even fewer — and the literal translation is almost always too long.

The first rule is aggressive concision. English headers are often padded with words that the column position already implies. "Last Updated Date" is three words, but the column shows a date, so 更新日 (three characters) carries the full meaning. "Customer Name" becomes 顧客名, not 顧客の名前. "Registration Date" becomes 登録日. Drop the redundant nouns that English includes for grammatical completeness but Japanese does not need.

Before (literal translation)
最終更新日時
Six characters for a column that usually shows only a date. Overflows the column and forces an awkward wrap.
After (concise)
更新日
Three characters. Use 最終更新 only if the column genuinely needs to distinguish "last" updated, and 日時 only if a timestamp is shown.

The second rule is line-break control. Because Japanese has no spaces, a browser given a header that does not fit will break it at an arbitrary character boundary. A header like 最終ログイン日時 can render as 最終ログ / イン日時 — splitting the katakana word ログイン across two lines, which looks broken to a Japanese reader. There are three fixes, in order of preference: shorten the header so it fits on one line; if a two-line header is unavoidable, design the break point so it falls at a meaningful boundary (最終ログイン / 日時); and use CSS word-break rules or word-joiner characters to keep katakana words intact. The worst outcome is leaving it to the browser, because the break will land mid-word.

Before (uncontrolled wrap)
最終ログ
イン日時
Browser broke the katakana word ログイン in half. Reads as broken text to any Japanese user.
After (controlled break)
最終ログイン
日時
Break placed at a meaningful boundary, keeping ログイン intact. Better still: shorten to 最終ログイン on one line.

The third rule is unit placement. When a column shows a measured value, Japanese convention often appends the unit to the header in parentheses rather than repeating it in every cell: 金額(円), 容量(GB), 利用率(%). This keeps the cells clean and the column scannable. English tables sometimes do this too, but it is near-universal in Japanese business tables, and omitting it makes the column read as unfinished.

Sort, Filter, and the 絞り込み vs フィルター Decision

The controls that sit above and around a table — sort, filter, search, group — are short labels, which is exactly why they get missed. They are buried in component-level UI rather than appearing in the main copy deck, and a translation pass that focuses on body copy walks right past them. They are also the labels Japanese users have read on every Japanese business application for twenty years, so an unconventional choice creates immediate friction.

The most consequential decision is filtering. For the action of narrowing rows by criteria, 絞り込み is the established Japanese business-software term and reads as fully native. フィルター is recognized and is acceptable in developer-facing or analytics-heavy tools where users expect the English-derived term — but for general enterprise SaaS, 絞り込み is the safer default. The clear mistake is フィルタリング as a label: it is the gerund "filtering," and as a button or control it reads as a literal translation rather than an interface element. Use 絞り込み for the control, and 絞り込む or フィルタを適用 for the apply action.

Before (literal translation)
フィルタリング
Gerund form. Reads as "the act of filtering," not as a control. Feels machine-translated.
After (Japanese convention)
絞り込み
The standard term every Japanese business tool uses. Apply action: 絞り込む or フィルタを適用.

The other table controls follow Japanese software convention, not direct translation:

  • Sort / Sort by: 並び替え rather than ソート or 並べ替える as a label.
  • Sort ascending / descending: 昇順 / 降順 — the universal terms. Never 上昇順 or アセンディング.
  • Search: 検索 rather than サーチ.
  • Group by: グループ化 rather than グループによる or グループ別.
  • Columns / Manage columns: 列の表示設定 or 表示する列 rather than カラム設定.
  • Reset / Clear filters: リセット is fine; for clearing filters specifically, 絞り込みを解除 reads more naturally than クリア.
  • Apply: 適用 — short and standard for committing a filter or setting.

These are not stylistic preferences. They are the labels Japanese users already map to functions automatically. An accurate but unconventional alternative forces the user to re-learn a control they already know how to use, which is the opposite of what localization should do.

Bulk Action Copy and Selection State

When a user selects rows and a bulk-action bar appears, two pieces of copy matter: the selection count and the action buttons. Both are commonly mishandled because the English source uses grammar Japanese does not share.

English counts rows as bare numbers: "3 selected." Japanese needs the measure word 件 for records or rows: 3件を選択中 (3 records selected). Using 個 or つ here is wrong — those are for physical objects and general items, not table records. The selection state reads naturally as 3件を選択中 or 3件選択しました, where 件 makes it unambiguous that the count refers to rows.

For the action buttons, name the verb the user is about to perform, optionally folding in the count. English "Delete selected (3)" becomes 選択した3件を削除 or, more compactly, a 削除 button next to the 3件を選択中 indicator. The instinct to prefix every bulk action with 一括 (bulk) should be resisted: 一括削除 is appropriate when the bulk-ness is the point being emphasized (a dedicated "bulk delete everything" feature), but for a button that simply acts on the current selection, 削除 alone is cleaner and reads better.

Before (literal translation)
3 個選択 ・ 一括削除する
Wrong counter (個 is for objects), redundant 一括, and the する verb-ending bloats the button.
After (natural Japanese)
3件を選択中 ・ 削除
件 is the correct row counter, 選択中 shows active state, and 削除 is a clean action label.

For destructive bulk actions, the confirmation dialog should restate the count: 選択した3件を削除しますか? (Delete the 3 selected records?). The count in the confirmation reassures the user about scope — particularly important in Japanese enterprise contexts where accidental bulk deletion is a serious concern and confirmation copy is expected to be explicit.

Empty States, No-Match States, and Loading Copy

A table can be empty for two completely different reasons, and Japanese convention — like good UX writing anywhere — distinguishes them. The mistake is using one message for both, which leaves the user unsure whether their data is gone or simply filtered out.

A genuinely empty table, where no records exist yet, reads データがありません or, more warmly, まだデータがありません ("no data yet," implying it will arrive). For a first-run empty state, an action-oriented form is even better: 最初のデータを追加してください. A no-match state, where a filter returned nothing, must acknowledge the filter: 条件に一致するデータがありません ("no data matches the criteria"). This single distinction prevents the panic of a user who applied a filter and now thinks the system deleted their records.

Before (one message for both)
データなし
Telegraphic, and identical whether the table is empty or filtered. The user cannot tell which.
After (state-specific)
条件に一致するデータがありません
Acknowledges the active filter. Empty-table state uses データがありません separately.

Loading states are the third case. An untranslated "Loading..." is a frequent oversight because it lives inside the component library. The Japanese forms are 読み込み中... for a generic load or データを取得しています ("retrieving data") for a longer fetch, both in です/ます register. For tables that paginate or lazy-load, さらに読み込み中... ("loading more") distinguishes incremental loads from the initial one.

Pagination and Number/Date Columns

Pagination labels are dense with count grammar, which makes them a common source of awkward Japanese. The English "1–20 of 348" maps to 348件中 1〜20件 — note that Japanese leads with the total (348件中, "of 348 records") before the visible range, the reverse of English order. "Rows per page" becomes 表示件数 or 1ページあたりの表示件数, again using 件. "Next" and "Previous" are 次へ and 前へ, with the へ particle giving them natural directional feel; bare 次 and 前 read as abrupt.

English Pagination Label Recommended Japanese Notes
1–20 of 348 348件中 1〜20件 Total leads, then the range — the reverse of English word order. Use 〜 (wave dash) for the range.
Rows per page 表示件数 Or 1ページあたりの表示件数 when space allows. 件 is the row counter.
Next / Previous 次へ / 前へ The へ particle adds natural direction. Bare 次 / 前 read as abrupt.
Page 3 of 18 18ページ中 3ページ目 目 makes it ordinal ("the 3rd page"). Total-first order, matching the range label.
Showing all 348 results 全348件を表示 全 ("all") plus the 件 count. 結果 is unnecessary — 件 already implies the records.

Number and date columns carry their own conventions. Currency columns use the 円 unit and 漢数字 grouping expectations: large values are often shown with 万 grouping (1,250万 rather than 12,500,000) when the audience is finance-facing, though the comma form is acceptable for raw transaction grids — the choice depends on whether the column is a summary or a ledger. Numbers right-align, as in any table, but ensure the alignment survives localization; a number column that switched to left-align during a layout port reads as broken to a Japanese accountant. Date columns use the Japanese order 2026/05/31 or 2026年5月31日 (never 05/31/2026), and a column that mixes ISO dates in some rows and localized dates in others is an immediate red flag during enterprise evaluation.

A data table is where your power users live. Marketing copy gets read once; the grid gets read every working hour. If the column headers wrap mid-word, the filter says フィルタリング, and the empty state cannot tell the user whether their data is gone — that is the impression of your product a Japanese analyst carries into the renewal conversation.

14-Point Audit Checklist for Japanese Data Table Localization

📑

Column Headers and Layout

  • Header concision: Drop redundant nouns — 更新日, not 最終更新日時, unless a timestamp is genuinely shown. Prefer dense kanji compounds over katakana phrases.
  • Line-break control: No mid-word wraps (最終ログ / イン日時). Keep to one line, or design the break at a meaningful boundary, or apply word-break CSS.
  • Unit in header: Append units in parentheses — 金額(円), 容量(GB), 利用率(%) — to keep cells clean.
  • Number column alignment: Numeric and currency columns stay right-aligned after the layout port.
🔍

Controls: Sort, Filter, Search

  • Filter label: 絞り込み for general SaaS. Never フィルタリング as a control. Apply: 絞り込む / フィルタを適用.
  • Sort: 並び替え, with 昇順 / 降順 for ascending and descending.
  • Group / Columns: グループ化 and 表示する列 — Japanese business-software conventions, not カラム設定.
  • Clear filters: 絞り込みを解除 rather than a bare クリア.
☑️

Bulk Actions and Selection

  • Row counter: 件, never 個 or つ — 3件を選択中, not 3個選択.
  • Action buttons: Verb-first and clean — 削除, not 一括削除する, unless bulk-ness is the explicit feature.
  • Destructive confirmation: Restate the count — 選択した3件を削除しますか?
📄

States and Pagination

  • Three table states: Empty (データがありません), no-match (条件に一致するデータがありません), and loading (読み込み中...) are distinct messages.
  • Pagination order: Total leads the range — 348件中 1〜20件. 次へ / 前へ with the へ particle.
  • Date columns: Japanese order (2026/05/31 or 2026年5月31日), consistent across every row — no ISO/localized mixing.

Auditing the data tables in your Japanese product?

The 14-point checklist covers the table-level decisions most teams miss. A full Japanese Mini Audit catches header overflow and mid-word wraps, the 絞り込み vs フィルター consistency, bulk-action counter grammar, and the empty-vs-no-match state distinction across your grids. Most products fail on 5 to 9 of the 14 points.

Request a Mini Audit

Frequently Asked Questions

Should I use 絞り込み or フィルター for the filter control in a Japanese data table?

For the action of narrowing rows by criteria, 絞り込み is the established Japanese business-software term and reads as native. フィルター is recognized and acceptable, especially in developer-facing or analytics tools where users expect the English-derived term, but 絞り込み is safer for general enterprise SaaS. The mistake to avoid is フィルタリング as a button label — it is the gerund form and feels like a literal translation of "Filtering" rather than a control label. Use 絞り込み for the control and フィルタを適用 / 絞り込む for the apply action.

How should English column headers be shortened for Japanese tables?

Japanese column headers should be as short as the data allows because Japanese characters are wider than Latin characters and tables are space-constrained. "Last Updated" becomes 更新日 or 最終更新, not 最終更新日時 unless the column actually shows a timestamp. "Created Date" becomes 登録日 or 作成日. Drop redundant words: a Status column is ステータス or 状態, never ステータス状況. Prefer kanji compounds over katakana phrases when both exist, because kanji is denser per character.

How do Japanese column headers wrap, and how do I prevent bad line breaks?

Japanese has no spaces, so a browser can break a header between any two characters unless you control it. A header like 最終ログイン日時 can wrap as 最終ログ / イン日時, which looks broken. Use a non-breaking approach: keep headers short enough to fit on one line, or insert word-joiner control characters or CSS word-break rules so breaks fall at meaningful boundaries (最終ログイン / 日時). For two-line headers, design the break point deliberately rather than leaving it to the browser.

What is the correct Japanese phrasing for bulk-action buttons above a table?

Bulk-action buttons should name the action as a verb the user is about to perform, often with the selected count. "3 selected · Delete" becomes 3件を選択中 with a 削除 button, or 選択した3件を削除. Avoid 一括 (bulk) as a prefix on every button — 一括削除 is fine when bulk-ness is the point, but for a button that acts on the current selection, 削除 alone is cleaner. Use 件 as the counter for rows or records, not 個 or つ.

How should empty and loading states inside a table be written in Japanese?

Distinguish three states. A genuinely empty table (no records exist yet) reads データがありません or まだデータがありません. A filtered result with no matches reads 条件に一致するデータがありません, which acknowledges the user's filter rather than implying the table is broken. A loading state reads 読み込み中... or データを取得しています in です/ます register, never an untranslated "Loading...". Conflating empty and no-match states is the most common error and it confuses users who think their data has been lost.

Japanese Data Table QA

Are Your Tables Reading as Localized or Translated?

Column headers, filter and sort copy, bulk-action buttons, and empty states decide whether Japanese power users trust your product. A focused QA review catches the table-level issues before procurement does.