Skip to content

Platform support ​

What each official viewer and SDK does with a .oim file today. All of them pass the conformance vectors in @oim-media/spec, so a feature marked ✅ renders or behaves the same everywhere. A feature marked ❌ is skipped: the file still opens and the rest of it renders.

FeatureWeb <oim-player>Desktop viewerFlutter oim_flutterRust oim
Read the file (tEXt/zTXt chunk)✅✅✅✅
Signature verification (ECDSA P-256)✅✅✅✅
Image seal (altered file refused)✅✅✅✅
Re-edit permission✅✅✅✅
Text in several languages✅✅✅text only
Language selector✅✅✅ (language + oimLanguages)—
Shapes, SVG paths and geo drawings✅✅✅—
Image layers (crop, fit, flip)✅✅✅—
Text style (weight, spacing, line height, case)✅✅✅—
Text runs and marks✅✅✅ (highlights as a plain background)—
Embedded fonts✅✅✅ (WOFF; WOFF2 from before 1.27.0 paints the platform font)—
Named palettes and colour roles✅✅✅—
Dynamic colours (dark mode)✅✅✅—
Shadow, blur and blend mode✅✅✅—
Media filters✅✅✅—
Gradient fills✅✅✅—
Pattern layers✅✅✅—
Grain✅✅✅—
Masks✅✅✅—
Parallax and scene loop✅✅✅—
Keyframe animation✅✅✅—
Loop and hover presets✅✅✅ (not glow)—
Text animations and entrances✅✅✅—
Actions and states (click, hover, reveal, play)✅✅✅—
Lottie layers✅✅✅ (allowLottie)—
  • Web <oim-player> is the reference implementation, from cdn.oim.media or the npm package @oim-media/player-oim.
  • Desktop viewer (Windows, macOS, Linux) wraps the web player, so it supports the same features.
  • Flutter oim_flutter renders natively on Android, iOS, desktop and web. It is installed from git until it reaches pub.dev.
  • Rust oim reads, verifies and resolves text. It does not render; use it on servers and in pipelines.

Videos (.ovm) play only in the web <ovm-player>.