Laatst bijgewerkt: 28 juli 2026

Inside the CBZ - Understanding the Anatomy of Digital Comics

TL;DR CBZ (Comic Book Zip) is niets meer dan een standaard ZIP‑archief dat een reeks opeenvolgende afbeeldingsbestanden—plus optionele metadata—samenvat in één DRM‑vrije stripcontainer. Omdat het vertrouwt op het alomtegenwoordige ZIP‑formaat, kan elke archiverings‑tool het openen, en lezers sorteren simpelweg de afbeeldingen alfabetisch om de pagina’s in volgorde weer te geven. Moderne CBZ‑bestanden bevatten vaak ComicInfo.xml voor rijke bibliotheekgegevens, gebruiken efficiënte beeldcodecs zoals WebP/AVIF, en zelfs ingebedde HTML voor interactieve “verbeterde” strips.


Wat is een CBZ precies?

  • Naam: Comic Book Zip – een ZIP‑bestand met de extensie .cbz.
  • MIME‑type: application/vnd.comicbook+zip (geregistreerd bij IANA in 2012).
  • Oorsprong: Gepopulariseerd door de ComicRack‑gemeenschap (2005‑2008) als een open‑source alternatief voor propriëtaire formaten zoals CBR of PDF.
  • Cross‑platform: Openbaar met elke ZIP‑compatibele tool (7‑Zip, WinRAR, macOS Archive Utility, Linux unzip). Er is geen speciale software nodig om de inhoud te inspecteren.

In de praktijk is een CBZ gewoon een map met afbeeldingen (JPEG, PNG, WebP, enz.) die gecomprimeerd en hernoemd is. Die eenvoud is de reden waarom het de de‑facto standaard is voor digitale strips op pc’s, tablets en telefoons.


Binnen een CBZ: De bestandsstructuur

Een goed gevormde CBZ volgt een platte hiërarchie—geen extra nesting—zodat lezers pagina’s direct kunnen vinden. Hieronder staat een typische boomstructuur:

MyComic.cbz
│
├─ 001.jpg          ← first page (front cover)
├─ 002.jpg
├─ 003.jpg
│   …
├─ 050.jpg          ← last page (back cover)
├─ ComicInfo.xml    ← optional rich metadata
└─ cover.jpg        ← optional thumbnail for library views

Belangrijke elementen

ElementWat het isWaarom het belangrijk is
Sequentiële afbeeldingsbestandenGenomineerd zodat ze alfabetisch sorteren (001.jpg, 002.jpg, …)Garandeert de juiste paginavolgorde in elke lezer.
AfbeeldingsformaatJPEG, PNG, GIF, WebP, AVIF, BMP, TIFFBepaalt bestandsgrootte, visuele getrouwheid en apparaatcompatibiliteit.
ComicInfo.xmlOptionele XML volgens het ComicRack-schemaSlaat titel, auteur, serie, uitgavenummer, taal, paginatype‑vlaggen en zelfs miniatuurgegevens op. Maakt krachtig bibliotheekbeheer mogelijk.
Omslagafbeeldingcover.jpg/cover.png in de rootWordt door veel apps gebruikt als de miniatuur van de strip in galerijen.
Unicode bestandsnamenModerne ZIP ondersteunt UTF‑8Essentieel voor niet‑Latijnse titels en internationale strips.
ZIP centrale directoryIndex aan het einde van het archiefLezers lezen dit om de paginalijst snel op te bouwen; corruptie hier kan de hele CBZ beschadigen.

Omdat het archief alleen al gecomprimeerde afbeeldingen comprimeert, is de uiteindelijke grootte meestal slechts de som van de oorspronkelijke bestanden plus een paar kilobytes aan ZIP‑overhead (< 5 %).


Metadata Magie: ComicInfo.xml en Pagina‑type Vlaggen

Hoewel een CBZ perfect werkt zonder extra bestanden, maakt het toevoegen van een ComicInfo.xml van een eenvoudige stapel afbeeldingen een doorzoekbare, rijkelijk beschreven strip. Hier is een minimaal voorbeeld:

<?xml version="1.0" encoding="utf-8"?>
<ComicInfo>
  <Title>Starship Voyager</Title>
  <Series>Space Adventures</Series>
  <Number>12</Number>
  <Writer>Jane Doe</Writer>
  <Penciller>John Smith</Penciller>
  <Inker>Alex Lee</Inker>
  <Publisher>Galaxy Press</Publisher>
  <Year>2024</Year>
  <LanguageISO>en</LanguageISO>
  <PageCount>50</PageCount>
  <Pages>
    <Page Image="001.jpg" Type="FrontCover"/>
    <Page Image="002.jpg" Type="Story"/>
    <Page Image="025.jpg" Type="DoublePage"/>
    <Page Image="050.jpg" Type="BackCover"/>
  </Pages>
</ComicInfo>

Waarom zou je het doen?

  • Bibliotheektools (ComicRack, Calibre, enz.) kunnen sorteren, filteren en zoeken op basis van deze velden.
  • Pagina‑type vlaggen (FrontCover, BackCover, Advert, Deleted, enz.) laten lezers advertenties verbergen, alleen verhaalpagina’s tonen, of een aangepaste omslagminiatuur weergeven.
  • Toekomstbestendigheid – Terwijl de Digital Comics Initiative een CBZ v2.0-specificatie opstelt, kan een manifestbestand (manifest.json) verplicht worden, maar bestaande lezers zullen ComicInfo.xml nog steeds respecteren.

CBZ-bestanden maken & converteren (Stap‑voor‑stap)

1. Bereid uw afbeeldingen voor

  • Exporteer elke strippagina als een afbeelding.
  • Geef ze namen met nul‑gevulde nummers (001.jpg, 002.jpg, …) om correcte sortering te garanderen.
  • Kies de codec die bij je publiek past: JPEG voor de kleinste bestandsgrootte, PNG voor verliesvrije kunst, WebP/AVIF voor moderne, hoogwaardige compressie.

2. (Optioneel) Genereer metadata

Tools zoals ComicTagger, cbr2cbz, of aangepaste scripts kunnen ComicInfo.xml automatisch invullen met OCR + LLM’s. Deze stap is optioneel maar sterk aanbevolen voor grote bibliotheken.

3. Zip het in

# Navigate to the folder containing the pages
cd /path/to/pages

# Create a CBZ without extra compression (JPEGs are already compressed)
zip -0 -r ../MyComic.cbz *.jpg *.png ComicInfo.xml cover.jpg
# -0 = store (no compression) – speeds up the process

Hernoem het resulterende .zip naar .cbz als je archiver het niet automatisch deed.

4. Verifieer het archief

import zipfile, pathlib, sys

def list_pages(cbz_path: pathlib.Path):
    with zipfile.ZipFile(cbz_path, 'r') as z:
        # Guard against zip‑bombs (max 500 MB uncompressed)
        total = sum(z.getinfo(name).file_size for name in z.namelist())
        if total > 500 * 1024 * 1024:
            raise ValueError("Archive too large")
        images = [n for n in z.namelist()
                  if n.lower().endswith(('.jpg', '.jpeg', '.png', '.webp', '.avif'))]
        images.sort()  # natural alphabetical order
        return images

if __name__ == "__main__":
    cbz = pathlib.Path(sys.argv[1])
    for page in list_pages(cbz):
        print(page)

Het uitvoeren van python list_pages.py MyComic.cbz zou een nette, geordende lijst met paginabestandsnamen moeten afdrukken.

5. Converteer naar PDF (als u een afdrukbare versie nodig heeft)

unzip -q MyComic.cbz -d tmp_pages
convert tmp_pages/*.jpg MyComic.pdf   # ImageMagick's `convert`
rm -r tmp_pages

TrendWat gebeurt erImpact op CBZ
Web‑first distributieUitgevers hosten CBZ’s op cloudopslag met vooraf ondertekende URL’s.Snellere, DRM‑vrije downloads; gemakkelijker zelf‑publicatie.
Hybride/interactieve stripsHet toevoegen van index.html + assets binnen het archief maakt “verbeterde” strips (audio, video, HTML5).Lezers die een webweergave ondersteunen, kunnen multimedialaagjes weergeven.
Adoptie van WebP & AVIF~15 % van nieuwe releases (2024) gebruiken deze codecs.30‑50 % grootte‑reductie bij behoud van kwaliteit—cruciaal voor mobiele bandbreedte.
AI‑gegenereerde metadataTools zoals ComicTagger gebruiken nu OCR + LLM’s om ComicInfo.xml in te vullen.Betere vindbaarheid, geautomatiseerde tagging en bibliotheekorganisatie.
Cloud‑sync leesappsChunky, Perfect Viewer en anderen synchroniseren voortgang via Firebase/iCloud.Naadloos lezen op telefoons, tablets en desktops.
Standaardiseringspush (CBZ v2.0)DCI stelt een verplicht manifest.json, multi‑resolutie‑assets en een <DRM>‑vlag voor.Zal CBZ robuuster maken voor high‑DPI‑apparaten en optioneel rechtenbeheer.
BeveiligingsbewustzijnZip‑bombaanvallen (kleine ZIP → gigabytes bij uitpakken) vormen een reële bedreiging.Lezers handhaven nu limieten voor extractiegrootte en gebruiken veilige bibliotheken (bijv. Python’s zipfile met controles).

Beveiligingstip voor ontwikkelaars

Valideer altijd de totale ongecomprimeerde grootte voordat je een CBZ extraheert. Een eenvoudige controle (zoals getoond in het Python‑fragment) voorkomt dat kwaadaardige archieven schijfruimte of geheugen uitputten.


Hoe een lezer een CBZ daadwerkelijk rendert

  1. Open het archief – De app leest de centrale directory van de ZIP om een snelle index van de items te krijgen.
  2. Filter afbeeldingsbestanden – Niet‑afbeeldingsitems (ComicInfo.xml, __MACOSX/, etc.) worden genegeerd.
  3. Sorteer alfabetisch – Door de nul‑opgevulde naamgeving komt de gesorteerde lijst overeen met de beoogde paginavolgorde.
  4. Metadata ontleden – Als ComicInfo.xml bestaat, haalt de lezer paginatype‑vlaggen, titel, auteur, enz. op en kan pagina’s verbergen die gemarkeerd zijn als Advert of Deleted.
  5. Render pages – Afbeeldingen worden gedecodeerd (vaak met hardware‑versnelde JPEG/WebP-decoders op moderne e‑ink tablets) en één‑voor‑één weergegeven, met pre‑fetching van de volgende paar pagina’s voor soepel scrollen.
  6. Status behouden – Leespositie, bladwijzers en annotaties worden lokaal opgeslagen of gesynchroniseerd met de cloud, afhankelijk van de app.

Dat verwerkingsproces is de reden waarom CBZ zich net zo snel en responsief aanvoelt als een native PDF, maar toch volledig open en bewerkbaar blijft.


Bottom line: De elegantie van CBZ ligt in de eenvoud—a plain ZIP die iedereen kan openen, bewerken, of hergebruiken. Met optionele ComicInfo.xml-metadata, moderne beeldcodecs en opkomende standaarden, blijft het zich ontwikkelen terwijl het trouw blijft aan zijn DRM‑free, cross‑platform wortels.