Why Is an EPUB Image Missing? Diagnose Paths Across Three Layers

An abstract editorial 3D still life illustrating Why Is an EPUB Image Missing? Diagnose Paths Across Three Layers

Choose the return point from evidence in the broken case

When an image is absent from an EPUB, do not begin with a familiar old-path replacement. Check where correspondence first breaks across three layers: the physical asset, the relative reference in the manuscript, and the package manifest. The diagnostic answer is the first failing layer, not merely “old path count zero.”

The article-specific Stage 4 run exercised only one branch: one stale relative path in a two-chapter, two-image source. It did not deliberately inject a missing physical file or a manifest omission, and it did not record a visibly broken EPUB before repair. The three-layer matrix must therefore preserve those evidence boundaries.

Read the matrix as a sequence of yes-or-no observations

Use the observations in order:

Physical asset Source resolves to it Resource in manifest Diagnosis Return point
No Irrelevant Irrelevant Missing physical file Original asset or intended folder
Yes No Irrelevant Stale or incorrect relative path Responsible source line
Yes Yes No Package omission Export settings and manifest generation
Yes Yes Yes A non-path cause remains Image format, CSS, or reading environment

Stop at the first failed observation. Editing a reference cannot restore a physical file. Inspecting only the manifest before resolving the source reference skips the earlier point at which the chain is already broken.

Establish the asset at the physical-file layer

First confirm that the expected image exists. Check its filename, extension, letter case, and directory. If the asset is absent, the diagnosis ends at the physical-file layer. Restore the source image or decide its correct location before examining later layers.

The Stage 4 evidence did not inject this failure, so it does not support a claim that Rune Studio restored a missing asset. This branch is a general diagnostic return point. After restoring the asset, begin again at the source-reference layer.

Resolve each source reference from its manuscript location

If the physical file exists, resolve the relative path from the chapter that contains it. In the controlled sample, one reference was correct and the other pointed to ../old/figure02.png. The search returned fileCount 1 and occurrenceCount 1, with the match on line 3 of chapters/01.md.

That line was explicitly changed to ../images/figure02.png, producing replacedCount 1. A second search returned fileCount 0 and occurrenceCount 0. This proves only the stale-source-path branch: one responsible line was isolated and the stale string was removed. It does not prove automatic tracking or the other two repairs.

Inspect the manifest only after file and source agree

If the asset exists and the source resolves to it, inspect the EPUB manifest. When the resource is absent there, return to export settings and package generation rather than rewriting unrelated chapters. Do not add a file directly to the generated EPUB, because that breaks the connection to the source of truth.

The Stage 4 run did not deliberately create a manifest omission. It found two packaged images and zero missing resources after the stale path had been repaired. The manifest branch is therefore a diagnostic condition, not a measured repair result.

The measured stale-path branch continued through regeneration

After the one reference was repaired, the two chapters were planned with fileCount 2, chapterCount 2, and valid true. The generated studio-445-260831.120000.epub was 5,629 bytes, and its recorded SHA-256 begins with dddd98.

Inspection reported entryCount 12, spineItemCount 5, imageCount 2, zero missing resources, nav.xhtml, NCX, two items in each navigation representation, valid true, and no issues. This shows that the repaired source produced a local two-chapter package with both images. It is not a before-and-after rendering test of an already broken EPUB.

Apply passed only to the measured branch

The article-specific passed status applies only to the route that explicitly repaired one stale relative path and then observed old-path count zero, two packaged images, and zero missing resources. The missing-file and manifest-omission branches remain untested.

Image appearance, automatic tracking of Finder or cloud-storage changes, KDP acceptance, hardware readers, and every reading application also remain untested. The manifest and spine roles are described in the EPUB 3.3 specification, but local structural inspection is not a universal rendering guarantee.

Limit Rune Studio to a tool for examining the layers

Rune Studio publicly supports updating relative image and link references in txt, text, md, and markdown files and generating EPUB 3 from Markdown manuscripts. Relative references containing ../ are in scope; external URLs and page anchors are excluded. Export constructs content.opf with a manifest and spine as well as nav.xhtml and NCX.

This run used explicit search, one targeted replacement, regeneration, and structural inspection on a dedicated copy. The product provides candidate tools for the source and package layers, but the failing layer is selected from the observations, not from the feature list.

Conclusion: repair only the first layer that fails

For a broken EPUB image, check the physical asset, the source reference’s resolved destination, and the manifest in that order. A missing asset returns to the source file, a stale reference returns to one responsible line, and a manifest omission returns to package generation. If all three agree, investigate a non-path cause.

The measured evidence covers only the stale-path branch: one match, one explicit repair, zero old-path matches, and a regenerated package with two images and zero missing resources. Do not turn that one operation into a universal repair. Let the first failed observation choose the return point.