These docs are for MetaTana 2.0, coming soon
NFO Format
NFO files are XML sidecars that travel next to your media. They make metadata portable: MetaTana reads them on scan, writes them after edits, and downstream tools (Plex, Jellyfin, Kodi, Emby) read them on their own scans. This page is the field-level reference.
Sample: movie NFO
Big Buck Bunny (2008)/Big Buck Bunny (2008).nfo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
<title>Big Buck Bunny</title>
<originaltitle>Big Buck Bunny</originaltitle>
<year>2008</year>
<plot>A short open-source animated film from the Blender Foundation.</plot>
<runtime>10</runtime>
<mpaa>PG</mpaa>
<genre>Animation</genre>
<genre>Short</genre>
<studio>Blender Foundation</studio>
<country>NL</country>
<premiered>2008-05-10</premiered>
<uniqueid type="tmdb" default="true">10378</uniqueid>
<uniqueid type="imdb">tt1254207</uniqueid>
<rating name="tmdb" max="10" default="true">
<value>7.0</value>
<votes>1234</votes>
</rating>
<art>
<poster>poster.jpg</poster>
<fanart>fanart.jpg</fanart>
<clearart>clearart.png</clearart>
<clearlogo>logo.png</clearlogo>
</art>
<actor>
<name>(public-domain demo content)</name>
<role>Self</role>
<order>1</order>
</actor>
<playcount>2</playcount>
<lastplayed>2026-04-15 21:30:00</lastplayed>
<dateadded>2026-04-01 10:00:00</dateadded>
</movie>
Sample: TV show + episode NFOs
Caminandes/tvshow.nfo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tvshow>
<title>Caminandes</title>
<originaltitle>Caminandes</originaltitle>
<plot>A short demo show used in docs screenshots.</plot>
<genre>Animation</genre>
<mpaa>NR</mpaa>
<studio>Blender Foundation</studio>
<premiered>2013-01-01</premiered>
<status>Ended</status>
<uniqueid type="tvdb" default="true">300000</uniqueid>
<art>
<poster>poster.jpg</poster>
<fanart>fanart.jpg</fanart>
<banner>banner.jpg</banner>
</art>
</tvshow>
Caminandes/Season 01/Caminandes S01E01.nfo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<episodedetails>
<title>Llama Drama</title>
<showtitle>Caminandes</showtitle>
<season>1</season>
<episode>1</episode>
<aired>2013-01-02</aired>
<plot>Demo episode metadata.</plot>
<runtime>3</runtime>
<uniqueid type="tvdb" default="true">300001</uniqueid>
<thumb>Caminandes S01E01-thumb.jpg</thumb>
</episodedetails>
Field reference
MetaTana reads and writes these fields. The "Read" column says whether MetaTana pulls the value out of an NFO during scan. The "Write" column says whether MetaTana emits the value when writing a sidecar.
Movie + show common fields
| Field | Read | Write | Notes |
|---|---|---|---|
title |
✓ | ✓ | Display title in current locale |
originaltitle |
✓ | ✓ | Title in original language |
year (movie) / premiered (show) |
✓ | ✓ | Release year / first-air date |
plot |
✓ | ✓ | Long-form summary |
outline |
✓ | ✓ | Short summary (fallback to plot if empty) |
runtime |
✓ | ✓ | Minutes |
mpaa |
✓ | ✓ | Certification (PG, R, TV-14, etc.) |
genre (multi) |
✓ | ✓ | Genres |
studio (multi) |
✓ | ✓ | Studios / production companies |
country (multi) |
✓ | ✓ | Country codes |
uniqueid (multi) |
✓ | ✓ | Provider IDs with type (tmdb / imdb / tvdb / mal / anilist) and optional default |
rating |
✓ | ✓ | Provider rating with name, max, value, votes |
art > poster/fanart/banner/clearart/clearlogo |
✓ | ✓ | Relative paths to artwork files |
actor (multi) |
✓ | ✓ | Cast with name, role, order, thumb |
Movie-only
| Field | Read | Write | Notes |
|---|---|---|---|
set |
✓ | ✓ | Collection / set membership. Written as so Jellyfin reads the collection's TMDb ID; Kodi ignores the attribute |
tagline |
✓ | ✓ | One-line tagline |
director (multi) |
✓ | ✓ | Director names |
writer (multi) |
✓ | ✓ | Writer names |
Show-only
| Field | Read | Write | Notes |
|---|---|---|---|
status |
✓ | ✓ | Continuing / Ended / Cancelled / On Hiatus |
season |
— | — | Per-season details live in season.nfo or as art overrides. Season 0's season.nfo is titled "Specials" in every format |
episodeguide |
✓ | ✓ | Read on import and kept when MetaTana rewrites tvshow.nfo; MetaTana does not create one where none existed |
Episode-only
| Field | Read | Write | Notes |
|---|---|---|---|
showtitle |
✓ | ✓ | Parent show title |
season |
✓ | ✓ | Season number under the active episode-order policy |
episode |
✓ | ✓ | Episode number under the active policy |
displayseason / displayepisode |
✓ | ✓ | Override numbers for clients that follow display vs storage order. Written only to place a season 0 special before a season and episode, never as a DVD or absolute numbering |
aired |
✓ | ✓ | Air date |
thumb |
✓ | ✓ | Episode-specific thumbnail filename |
Playback / progress
| Field | Read | Write | Notes |
|---|---|---|---|
playcount |
✓ | ✓ | Watch count |
lastplayed |
✓ | ✓ | Timestamp |
resume (position / total) |
✓ | ✓ | Partial-watched position |
dateadded |
✓ | ✓ | When MetaTana first indexed the file |
playcount, lastplayed, and resume by default. For Plex watched-state propagation, use MetaTana Sync to push directly to the Plex API. See Troubleshooting: playback client can't see files.
Overwrite behavior
There is no overwrite switch. An explicit NFO write replaces the fields MetaTana manages, keeps unknown or hand-added XML, and skips the write when the output would be byte-identical. To write a clean file from current metadata only, use the Clean NFO policy in Library's bulk sidecar actions.
NFO file settings
Flavour in Settings › Files › NFO files chooses the format: Kodi (default), Emby, Jellyfin, Plex, or MediaPortal. Its More options are Lock data (Emby only), Include stream details, Write a short outline, Write artwork URLs, and Single studio. A folder can use its own format instead (Edit folder on the Folders page).
Sidecar file names follow the media file:
| Item | Sidecar |
|---|---|
| Movie | (movie.nfo at the root of a Blu-ray or DVD folder) |
Multi-part movie (cd1, cd2) |
movie.nfo; with the Kodi format also for the parts' shared name |
| Show | tvshow.nfo |
| Episode | |
Kodi, Jellyfin, and Emby all read this layout. Plex needs a local-NFO agent or plugin to read NFO files.
Kodi reads movie.nfo only when the library folder is set to one movie per folder. Otherwise it reads a multi-part movie's NFO by the parts' shared name, so for Dune.1984.cd1.avi and Dune.1984.cd2.avi the Kodi format also writes Dune.1984.nfo. When the parts share a folder with other movies, only Dune.1984.nfo is written. Rename gives it the new name with the parts, and Delete moves it to the trash with them.
Which files get an NFO:
- Scrape on a show writes
tvshow.nfoin the show folder, next to the episode NFOs. - Write NFO on a show's episodes also writes the show's
tvshow.nfowhen the show folder has none. It never replaces atvshow.nfothat is already there, and writes none in a folder that holds episodes of other shows or at the top of a library folder. - An episode NFO carries the episode's own IDs in
, never the show's IDs. - An episode with no season or episode number (an absolute-numbered anime file that is not mapped yet, for example) gets no NFO until it is mapped to a season and episode.
- Samples, trailers, and extras get no NFO.
- Save in the metadata editor marks the title's NFO as out of date, and it appears under Library › Needs attention › NFO out of date. In a folder where Write NFO files is Always, Save also rewrites the NFO MetaTana wrote.
Per-format details:
- Emby and Jellyfin: after
, the NFO also has a flat(the default rating, 0 to 10) and(Rotten Tomatoes, 0 to 100). Without them, Jellyfin could show the lastrow, often a 0 to 100 score, as the community rating. - Kodi, Emby, and Jellyfin:
in stream details is a decimal such as1.777778, taken from MediaInfo's display aspect ratio when there is one. - Season art names depend on the format. See Reference: file layout.
- Plex gets its own poster, episode image, and subtitle names (
poster.jpgandfanart.jpgin show and movie folders,,.jpg Movie.en.sdh.srt), and Kodi-style formats getdiscart.png,landscape.jpg, andextrafanart/fanart1.jpg. See Reference: file layout.
Differences from upstream Kodi NFO
MetaTana follows the Kodi NFO spec where possible. Notable extensions and constraints:
uniqueidwithtype="mal"for MyAnimeList is MetaTana-specific; Kodi clients ignore it gracefullylockedfieldsis not currently emitted (lock state is DB-only); future versions may add itartpaths are written as relative names (poster.jpg), not absolute paths, so the layout survives a folder move
Going deeper
- NFO and artwork: the conceptual sidecar guide
- Lock fields: protecting NFO-derived values from rescrape
- Sync: the NFO repair, pull, and create modes
- Reference: file layout: sidecar layout on disk
- Troubleshooting: sidecar didn't appear: when writes don't land