Theme
Sound
Jump to a component
Core · Media
Caption
Caption is one subtitle line drawn over video.
Live, from @anicanon/sakuga 2.0.0
Sakuga for iOS and Android is coming
iOS
Coming soon
Caption for iOS is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
Android
Coming soon
Caption for Android is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
- Use it for
- One subtitle line over an episode or a short, at most two lines, centred above the player controls.
- Not for
- The quiet line that explains a heading or a fieldText
- The caption tracks of a cut in the editorTimeline
- A planned line with its speaker and translationDialogueLine
Guidelines
- On by default for every episode and short; the viewer turns it off with the captions toggle.
size="lg"(24px) in the desktop player,md(16px) on phone and in shorts.- At most two lines, centred, above the player controls. The lines balance, so a two-line subtitle splits evenly instead of leaving one word on the second line.
import { Caption } from '@anicanon/sakuga/ui';
export default function CaptionExample() {
return (
<>
<img
src="/art/eba-s1e1.webp"
alt=""
style={{
position: 'absolute',
inset: 0,
width: '100%',
height: '100%',
objectFit: 'cover',
}}
/>
<Caption>To the people who did what I couldn’t do alone.</Caption>
</>
);
}PropsCaptionProps
childrenrequiredReactNodesize'lg' | 'md'classNamestringEach token reads a role, and the role lands on a value in each theme. Change the role and every component that reads it follows.
Colour
caption-bgCaption: box behind a subtitle line.bg-scrimblack-a72rgba(0,0,0,0.72)bg-scrimblack-a72rgba(0,0,0,0.72)caption-fgCaption: subtitle glyphs.text-on-medianeutral-0#fffffftext-on-medianeutral-0#ffffffSpace and shape
caption-radiusradius-xs4px
caption-padding-y-lginset-xs4px
caption-padding-x-lginset-md12px
caption-padding-y-mdinset-2xs2px
caption-padding-x-mdinset-sm8px
Type
caption-font-familyfont-sansFunnel Sans
caption-font-weightweight-strong600
caption-font-size-lgtext-subtitle-size24px
Aa
caption-line-height-lgtext-subtitle-line-height32px
caption-font-size-mdtext-subtitle-sm-size16px
Aa
caption-line-height-mdtext-subtitle-sm-line-height22px
Checked automatically with axe-core 4.11.4 against WCAG 2.2 A and AA, on the live preview above, in light and dark, on 26 October 2026.
- Result
- No issues found, in light or in dark.
- By design
- Not focusable; read as a paragraph of text where it sits. It isn't a live region, so a new line is not announced as it changes.
- Not tested
- The automated check doesn't test keyboard use, focus order or what a screen reader says. The lines above are the design system's own account of them.