{"record":{"id":"5c1fd7475d57b2da","repo":"gohugoio/hugo","slug":"unknown-output-format-q-for-kind-q","errorCode":null,"errorMessage":"unknown output format %q for kind %q","messagePattern":"unknown output format %q for kind %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"config/allconfig/allconfig.go","lineNumber":317,"sourceCode":"\t\tif newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != \"\" {\n\t\t\tlogger.Deprecatef(false, \"Kind %q used in outputs configuration is deprecated, use %q instead.\", kind, newKind)\n\t\t\tkind = newKind\n\t\t}\n\t\tif disabledKinds[kind] {\n\t\t\tcontinue\n\t\t}\n\t\tif kinds.GetKindAny(kind) == \"\" {\n\t\t\tlogger.Warnf(\"Unknown kind %q in outputs configuration.\", kind)\n\t\t\tcontinue\n\t\t}\n\t\tfor _, format := range formats {\n\t\t\tif isRssDisabled && format == \"rss\" {\n\t\t\t\t// Legacy config.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tf, found := outputFormats.GetByName(format)\n\t\t\tif !found {\n\t\t\t\ttransientErr = fmt.Errorf(\"unknown output format %q for kind %q\", format, kind)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tkindOutputFormats[kind] = append(kindOutputFormats[kind], f)\n\t\t}\n\t}\n\n\tdefaultOutputFormat := outputFormats[0]\n\tc.DefaultOutputFormat = strings.ToLower(c.DefaultOutputFormat)\n\tif c.DefaultOutputFormat != \"\" {\n\t\tf, found := outputFormats.GetByName(c.DefaultOutputFormat)\n\t\tif !found {\n\t\t\treturn fmt.Errorf(\"unknown default output format %q\", c.DefaultOutputFormat)\n\t\t}\n\t\tdefaultOutputFormat = f\n\t} else {\n\t\tc.DefaultOutputFormat = defaultOutputFormat.Name\n\t}\n","sourceCodeStart":299,"sourceCodeEnd":335,"githubUrl":"https://github.com/gohugoio/hugo/blob/52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2/config/allconfig/allconfig.go#L299-L335","documentation":"Recorded as a transient error during CompileConfig when an entry in the `outputs` map references an output format name that is not present in the configured outputFormats set (outputFormats.GetByName returns false). The message names both the missing format and the kind it was declared for.","triggerScenarios":"Declaring `outputs: { home: [\"HTML\",\"JSON\",\"FOO\"] }` when 'FOO' is neither a built-in format nor defined under `outputFormats`. Typos in format names or referencing a custom format that was never defined both trigger it.","commonSituations":"Renaming/removing a custom output format without updating the `outputs` map; typos like 'Html' vs 'HTML' (lookups are case-sensitive on the name); theme overrides that drop a format the content assumes.","solutions":["Check the exact format name against `outputFormats` keys and built-in names.","Add the missing format definition under `outputFormats` if intended.","Remove the stale entry from the `outputs` map.","Mind case: built-in names are uppercase (HTML, RSS, JSON, AMP, CSV, etc.)."],"exampleFix":"// before\n[outputs]\nhome = [\"HTML\", \"HTMl\"]\n// after\n[outputs]\nhome = [\"HTML\"]","handlingStrategy":"validation","validationCode":"func knownFormats(cfg output.Formats, names []string) error {\n  for _, n := range names { if _, ok := cfg.GetByName(n); !ok { return fmt.Errorf(\"unknown format %q\", n) } }\n  return nil\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Cross-check every `outputs` value against `outputFormats` keys.","Mind case sensitivity: HTML not html.","When renaming a custom format, update all `outputs` references atomically."],"tags":["config","output-format","outputs","allconfig"],"backgroundTag":null,"analyzedSha":"52c9bd7908b4d02d4d0ff8f82a888834d6ee10d2","analyzedAt":"2026-08-09T21:49:36.660Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}