Spaceless-language API · Simplified + Traditional

Chinese Subtitles API

Captions that read like a human typeset them

Render styled Chinese captions into video through one API. ZapCap handles the parts generic subtitle tools get wrong on Chinese — line breaks without visible spaces, punctuation that can’t start a line, bottom-heavy phrase shapes, and product names that don’t deserve to be split mid-character.

Language-aware breaks · kinsoku punctuation · brand-term dictionary
The layout problem

Why generic subtitle APIs break on Chinese

Chinese isn’t English without spaces. It’s a writing system with its own line-break rules, punctuation conventions, and reading-speed expectations. Get them wrong and the captions read awkwardly — even when the translation is perfect.

No visible word spaces

Chinese text isn’t separated by whitespace the way English is. Naive splitters break by character or punctuation, producing single-character lines and orphaned particles.

Punctuation can’t start lines

Full-width punctuation like 。 , ? should not start a new line — kinsoku rules pull them onto the previous line.

Bottom-heavy reading shape

Professional Chinese subtitling prefers a shorter top line over a shorter bottom one — the opposite of English convention. Netflix’s PRC guide formalizes this.

Bad vs good

The same translation, two different renderers

Translation: identical. Layout: not. Annotations call out the things that break Chinese captions in practice.

source transcript · 两分钟就好,真的。

Generic subtitle API
123
两 分 钟 就
好 ,
真的。
1Mid-phrase break. 就好 is one phrase, split across two lines.
2Comma orphaned. A full-width , starts the second line — kinsoku violation.
3Three lines, top-heavy. Convention is max two lines, bottom-heavy.
Result: readable, but feels machine-cut. Drops sentence rhythm.
ZapCap rendering
两分钟就好,
真的。
Phrase-preserving break. 就好 stays whole.
Punctuation hugs the previous line. Kinsoku-compliant.
Two lines, bottom-heavy. Matches Netflix PRC guidance.
Result: reads like a hand-set subtitle. Keyword emphasis preserved through the API.
Under the hood

How ZapCap renders Chinese captions

Phrase-aware segmentation

Captions are split at phrase boundaries, not at fixed character counts. Words like 就好, 真的, 产品名 stay whole.

Kinsoku punctuation

Full-width punctuation (, 。 ? !) is pulled onto the previous line. Opening quotes attach to the next.

Bottom-heavy, max two lines

When wrapping is needed, the shorter line lands on top — matching Netflix’s PRC style guide. Three-line cues are split into two cues instead.

Brand-term dictionary

Add product names and approved transliterations to the dictionary — transcription hints that bias recognition toward your brand terms. Carry an approved transcript through and the text renders verbatim.

Simplified + Traditional

Both scripts treated as separate localizations — a content and transcript choice, not an API language code. Set language "zh" on the task and supply the script you want in the transcript.

Font fallback chain

Renders with PingFang SC / Hiragino Sans GB / Microsoft YaHei stacks server-side. No client-side font availability — what you see in the MP4 is what every viewer sees.

Standards we work to

Built on published references — not magic

The rules above aren’t bespoke. They’re documented by Unicode, the W3C, and Netflix’s professional subtitling guidelines. ZapCap implements them; this page cites them.

If you’re evaluating us against another captioning vendor, ask whether they implement these. The answers tell you a lot.

REFERENCES
Use it

Render Chinese captions in one task call

Set language on the render task. Optional: send an approved translation (skip retranscription) and a brand-term dictionary to bias recognition toward your product names.

  • Set language "zh" — Simplified vs Traditional is a transcript choice
  • Bring your own translation via the SRT-to-burned-in workflow
  • Mix with caption style templates — Chinese with a Beast preset works
  • One source video → multiple language renders, consistent style
// Chinese caption render — auto-translate path
// No SDK — call the REST API with fetch.
// fetch IDs from GET /templates
const task = await fetch(`https://api.zapcap.ai/videos/${videoId}/task`, {
  method: 'POST',
  headers: { 'x-api-key': process.env.ZAPCAP_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    templateId: '<TEMPLATE_UUID>',
    language:   'zh',
    renderOptions: {
      subsOptions: { emphasizeKeywords: true },
    },
    // Transcription hints — biases recognition toward your brand terms.
    dictionary: ['ACME', 'TurboMax'],
    notification: {
      type: 'webhook',
      notificationsFor: ['render'],
      recipient: 'https://acme.com/hooks/zapcap',
    },
  }),
}).then(r => r.json());

// Bring-your-own translation
const task2 = await fetch(`https://api.zapcap.ai/videos/${videoId}/task`, {
  method: 'POST',
  headers: { 'x-api-key': process.env.ZAPCAP_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    templateId: '<TEMPLATE_UUID>',
    language:   'zh',
    transcript: zhApprovedTranscript,
    notification: {
      type: 'webhook',
      notificationsFor: ['render'],
      recipient: 'https://acme.com/hooks/zapcap',
    },
  }),
}).then(r => r.json());
QA checklist

Before you ship Chinese captions

Six checks the rendering pipeline can’t do for you.

  • Decide Simplified or Traditional per market. They’re different localizations expressed in your transcript, not different API language codes.
  • Define a brand-term dictionary. Product names and approved transliterations bias transcription; bring an approved transcript for copy that must not be re-translated.
  • Cap at two lines, bottom-heavy. Split into multiple cues if a single one exceeds the per-line character count.
  • Check reading speed. Aim for the Netflix PRC guide’s per-second character count.
  • Safe-zone check on 9:16. Chinese caption boxes are visually heavier; overrun shows up faster than on English.
  • Native-speaker pass on the rendered MP4, not the source transcript. Layout problems only show up at render time.

Chinese subtitle API questions

Yes. Set language "zh" on the render task; Simplified vs Traditional is a transcript choice, not a separate API code. Supply the script you want in the approved transcript.

Render Chinese subtitles through the API

Language-aware line breaks, kinsoku punctuation, a brand-term dictionary, and bring-your-own translation — all in one task call. Pricing is $0.10/min of rendered video.