Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kagisearch/kite-public/llms.txt

Use this file to discover all available pages before exploring further.

Kagi News stores all preferences in your browser’s localStorage, so they persist across sessions without requiring an account. Every setting takes effect immediately — no save button needed. If you sign in with a Kagi account you can optionally sync settings across all your devices; see Sync for details.
You can export your entire settings configuration as a JSON file from the Content Filters tab (Backup & Restore section) or from the Sync & Privacy tab. Import the file on any device to restore your preferences in one step.

Settings groups

Settings are organized into tabs in the Settings modal. Each tab maps to a logical group that is also used as the sync category.
Controls the visual theme, text size, and layout of the app.
SettingTypeDefaultDescription
theme'system' | 'light' | 'dark''system'Color scheme. system follows the OS dark-mode preference and updates automatically when it changes.
fontSize'xs' | 'small' | 'normal' | 'large' | 'xl''normal'Global text size. Scales all type from 10 px (xs) up to 20 px (xl) at the base size.
layoutWidth'normal' | 'wide' | 'full''normal'Maximum width of the content area on larger screens. Normal = 732 px, Wide = 1024 px, Full = edge-to-edge. Desktop only.
Controls how stories are listed and opened within each category.
SettingTypeDefaultDescription
storyCountnumber (3–12)12Number of stories shown per category. Clamped to the range 3–12.
storyExpandMode'always' | 'doubleClick' | 'never''doubleClick'When all stories in a category expand. always = immediately on load; doubleClick = on double-click of the category header; never = never auto-expand.
storyOpenMode'multiple' | 'single''multiple'Whether multiple stories can be open simultaneously. single collapses the previous story when you open a new one.
categoryHeaderPosition'top' | 'bottom''bottom'Where category navigation tabs appear on mobile devices.
mapsProvider'auto' | 'kagi' | 'google' | 'openstreetmap' | 'apple''auto'Which map service opens when you click a location link in a story. auto picks the best option for the device.
useLatestUrlsbooleanfalseWhen enabled, share URLs use /latest/ so bookmarks always point to the current batch rather than a specific dated batch.
Controls the interface language and how story content is translated or displayed.
SettingTypeDefaultDescription
languageLanguage code'en'Interface language — used for all buttons, labels, and UI strings. Supported: en, fr, de, es, pt, pt-BR, it, nl, ja, zh-Hans, zh-Hant, hi, uk, ar, he, ca, fi, ko, lb, nb, pl, ru, sv, th, tr, et.
dataLanguage'default' | 'source' | 'custom' | <lang code>'default'Content translation mode. default = smart mode (source language for country-specific categories, browser language for others); source = always show original language; custom = translate into your chosen languages; a specific code = translate everything into that language.
contentLanguagesSupportedLanguage[][]Ordered list of languages you can read, used only when dataLanguage is 'custom'. The first entry is the primary translation target; additional entries are languages you can also read without translation.
Controls which news categories are visible and how they are presented.
SettingTypeDefaultDescription
categoryOrderstring[][]Ordered list of category IDs. Drag categories in the settings panel to reorder.
enabledCategoriesstring[]See belowCategory IDs that are active and visible in the news feed.
disabledCategoriesstring[]See belowCategory IDs that are hidden.
singlePageMode'disabled' | 'sequential' | 'mixed' | 'random''disabled'Layout mode for the feed. disabled uses the default tabbed view; sequential scrolls all stories grouped by category; mixed interleaves stories round-robin across categories; random shuffles all stories.
Default enabled categories (first-time setup): world, usa, business, tech, science, sports, gaming, onthisday.New categories added to the platform are automatically placed in the disabled list until you enable them.
Controls which topics are hidden or blurred in the news feed.
SettingTypeDefaultDescription
contentFilter'default' | 'family' | 'none''default'Global content safety level. family applies additional filtering suitable for mixed audiences; none turns off built-in filtering.
Filter keywordsstring[][]Custom keyword list. Stories matching any keyword are filtered according to the mode and scope below. You can add multiple keywords at once by separating them with commas.
Filter presetsToggleable presetsnone activePre-built keyword groups for common topics (e.g. politics, sports, conflicts). Toggle presets on or off — their keywords are managed automatically.
filterMode'hide' | 'blur''hide'What happens to matched stories. hide removes them from the list; blur shows a blurred placeholder that can be revealed on click.
filterScope'title' | 'summary' | 'all''all'Which parts of a story are checked against keywords. title checks the headline only; summary checks the headline and summary; all checks all content.
Show filtered countbooleantrueDisplay a badge on each category showing how many stories were filtered out.
You can export your filter configuration as a JSON file and import it on another device. The export file is named kite-content-filters-YYYY-MM-DD.json.
Controls which sections are shown inside an open story card.
Section keyDefaultDescription
showSourcetrueShow the list of source articles.
showSummaryBulletstrueShow the bullet-point summary.
showDetailedSummarytrueShow the detailed prose summary.
showPerspectivesfalseShow differing perspectives on the story.
showQuestionsfalseShow AI-generated Q&A for the story.
showTimelinefalseShow a chronological timeline of events.
showTechnicalDetailsfalseShow technical details (for science/tech stories).
Automatically simplifies story text to a chosen reading level. Available to Kagi subscribers.
SettingTypeDefaultDescription
globalReadingLevel'normal' | 'simple' | 'very-simple''normal'Default reading level for all categories. simple targets B1 proficiency; very-simple targets A2 with basic vocabulary.
categoryReadingLevelsRecord<string, ReadingLevel>{}Per-category overrides. Map of category ID to reading level. When a category has an override it takes precedence over the global setting. Set to 'use-global' to remove the override.
The onthisday category does not support reading level simplification.

How settings are saved

Settings are persisted to localStorage immediately when changed. Most settings use a when_not_default strategy — only non-default values are written, keeping storage compact. Array settings such as categoryOrder and contentLanguages always write their full value. When syncing is active, each change is debounced and uploaded to the server within a few seconds. To reset everything to factory defaults, open the browser console and run:
localStorage.clear();
location.reload();
Or use the individual “Reset to Defaults” buttons available in the Content Filters tab.

Build docs developers (and LLMs) love