gohugoio/hugo · error

failed to resolve media type for %q

Error message

failed to resolve media type for %q

What it means

Thrown by resolveContentType as the final fallback after it tried both the explicit Content.MediaType (via mediaTypes.GetByType) and the Content.Markup string (via MarkupToMediaType) and the resolved ContentMediaType is still zero. The reported string is the markup or mediaType value that could not be resolved.

Source

Thrown at resources/page/pagemeta/page_frontmatter.go:430

			return fmt.Errorf("failed to resolve media type for suffix %q", ext)
		}
	}

	var s string
	if p.ContentMediaType.IsZero() {
		if p.Content.MediaType != "" {
			s = p.Content.MediaType
			p.ContentMediaType, _ = mediaTypes.GetByType(s)
		}

		if p.ContentMediaType.IsZero() && p.Content.Markup != "" {
			s = p.Content.Markup
			p.ContentMediaType = MarkupToMediaType(s, mediaTypes)
		}
	}

	if p.ContentMediaType.IsZero() {
		return fmt.Errorf("failed to resolve media type for %q", s)
	}

	if p.Content.Markup == "" {
		p.Content.Markup = p.ContentMediaType.SubType
	}
	return nil
}

// Compile sets up the page configuration after all fields have been set.
func (p *PageConfigLate) Compile(e *PageConfigEarly, logger loggers.Logger, outputFormats output.Formats) error {
	if e.IsFromContentAdapter {
		if err := mapstructure.WeakDecode(p.ContentAdapterData, p); err != nil {
			err = fmt.Errorf("failed to decode page map: %w", err)
			return err
		}
	}

	if p.Params == nil {

View on GitHub (pinned to 52c9bd7908)

Solutions

  1. Correct the markup/mediaType value to one Hugo knows (md, html, org, rst, asciidoc, pandoc, etc.).
  2. Register the custom media type under [mediaTypes] and (if needed) a content adapter for it.
  3. Leave markup empty so Hugo infers it from the file extension.

Example fix

# before
---
markup: mardown
---
# after
---
markup: md
---
Defensive patterns

Strategy: validation

Validate before calling

s := strings.ToLower(markupOrMediaType)
if _, found := mediaTypes.GetByType(s); !found {
    if mt := pagemeta.MarkupToMediaType(s, mediaTypes); mt.IsZero() {
        return fmt.Errorf("unknown markup/mediaType %q", s)
    }
}

Try / catch

if err := pcfg.CompileEarly(pi, cascades, conf, fim, base, false); err != nil {
    return fmt.Errorf("resolve media type: %w", err)
}

Prevention

When it happens

Trigger: Front matter or page config sets 'markup' or 'mediaType' to a value that does not map to any registered media type, e.g. 'markup: myownformat' or 'mediaType: application/x-nonexistent'.

Common situations: Typos in the markup/mediaType front matter value, referencing a media type that was not added under [mediaTypes], or assuming a format is built-in when it requires a content adapter or config.

Related errors


AI-assisted analysis of gohugoio/hugo@52c9bd7908 (2026-08-09). Data as JSON: /api/errors/b0400317be43c923. Report an issue: GitHub.