Anki’s UI is primarily written in Python/PyQt. A number of screens, such as the review
screen and editor, also make use of TypeScript and Svelte. To write add-ons, you will
need some basic programming experience, and some familiarity with Python. The Python
tutorial is a good place to start.Add-ons in Anki are implemented as Python modules, which Anki loads at startup.
They can register themselves to be notified when certain actions take place (eg,
a hook that runs when the browse screen is loaded), and can make changes to the
UI (e.g.adding a new menu item) when those actions take place.There is a brief overview of Anki’s
architecture
available.While it is possible to develop Anki add-ons with just a plain text editor, you
can make your life much easier by using a proper code editor/IDE. Please see the Editor Setup section for more information.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Anki Docs","colors":{"primary":"#4B94D8","light":"#6BADE8","dark":"#2F75B5"},"logo":{"light":"https://mintcdn.com/anki/4yLyWj6_UVW-sSDI/media/anki-logo.svg?fit=max\u0026auto=format\u0026n=4yLyWj6_UVW-sSDI\u0026q=85\u0026s=6d1dc6938946ebdf46b57afa43c45a91","dark":"https://mintcdn.com/anki/4yLyWj6_UVW-sSDI/media/anki-logo.svg?fit=max\u0026auto=format\u0026n=4yLyWj6_UVW-sSDI\u0026q=85\u0026s=6d1dc6938946ebdf46b57afa43c45a91"},"favicon":"https://mintcdn.com/anki/4yLyWj6_UVW-sSDI/media/anki-logo.svg?fit=max\u0026auto=format\u0026n=4yLyWj6_UVW-sSDI\u0026q=85\u0026s=6d1dc6938946ebdf46b57afa43c45a91","fonts":{"family":"Hanken Grotesk"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Anki","icon":"house","href":"https://apps.ankiweb.net"},{"anchor":"GitHub","icon":"github","href":"https://github.com/ankitects/anki"}]},"languages":[{"language":"en","href":"manual/intro"},{"language":"de","href":"de/manual/intro"},{"language":"es","href":"es/manual/intro"},{"language":"fr","href":"fr/manual/intro"},{"language":"it","href":"it/manual/intro"},{"language":"id","href":"id/manual/intro"},{"language":"uz","href":"uz/manual/intro"},{"language":"pl","href":"pl/manual/intro"},{"language":"pt","href":"pt/manual/intro"},{"language":"ru","href":"ru/manual/intro"},{"language":"uk","href":"uk/manual/intro"},{"language":"ar","href":"ar/manual/intro"},{"language":"ja","href":"ja/manual/intro"},{"language":"zh-Hans","href":"zh-Hans/manual/intro"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"anki","hasAudioNarration":false,"actualSubdomain":"anki","customDomains":["docs.ankiweb.net"],"gitSource":{"type":"github","owner":"ankitects","repo":"anki","deployBranch":"mintlify-docs","contentDirectory":"docs-site","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac930d1632132e2b6a568cb","collectionId":"30b5459a-0716-4d3a-9bce-0510691b2172","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac930d1632132e2b6a568cb"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac930d1632132e2b6a568cb","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"en","tag":"FAQs","count":72},{"language":"en","tag":"Support FAQs","count":72},{"language":"ar","tag":"FAQs","count":65},{"language":"ar","tag":"Support FAQs","count":65},{"language":"en","tag":"Manual","count":55},{"language":"en","tag":"Desktop Manual","count":55},{"language":"ar","tag":"Manual","count":47},{"language":"ar","tag":"Desktop Manual","count":47},{"language":"en","tag":"Releases","count":34},{"language":"en","tag":"Release Notes","count":34},{"language":"en","tag":"Add-ons","count":21},{"language":"en","tag":"Add-on Development","count":21},{"language":"en","tag":"Developers","count":21},{"language":"en","tag":"Core Development","count":21},{"language":"ar","tag":"Platform Notes","count":18},{"language":"ar","tag":"Cards and Notes","count":16},{"language":"ar","tag":"Scheduling","count":11},{"language":"ar","tag":"Synchronising and Ankiweb","count":11},{"language":"ar","tag":"Decks","count":8},{"language":"ar","tag":"Anki Desktop","count":8},{"language":"de","tag":"Manual","count":1},{"language":"de","tag":"Desktop Manual","count":1},{"language":"es","tag":"Manual","count":1},{"language":"es","tag":"Desktop Manual","count":1},{"language":"fr","tag":"Manual","count":1},{"language":"fr","tag":"Desktop Manual","count":1},{"language":"id","tag":"Manual","count":1},{"language":"id","tag":"Desktop Manual","count":1},{"language":"it","tag":"Manual","count":1},{"language":"it","tag":"Desktop Manual","count":1},{"language":"ja","tag":"Manual","count":1},{"language":"ja","tag":"Desktop Manual","count":1},{"language":"pl","tag":"Manual","count":1},{"language":"pl","tag":"Desktop Manual","count":1},{"language":"pt","tag":"Manual","count":1},{"language":"pt","tag":"Desktop Manual","count":1},{"language":"ru","tag":"Manual","count":1},{"language":"ru","tag":"Desktop Manual","count":1},{"language":"uk","tag":"Manual","count":1},{"language":"uk","tag":"Desktop Manual","count":1},{"language":"uz","tag":"Manual","count":1},{"language":"uz","tag":"Desktop Manual","count":1},{"language":"zh-Hans","tag":"Manual","count":1},{"language":"zh-Hans","tag":"Desktop Manual","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--anki-foreground:hsl(248 8% 20%);--anki-subtle:hsl(0 1% 33%);--anki-background:hsl(0 0% 100%);--anki-primary:hsl(208 65% 55%);--anki-primary-darker:hsl(208 65% 52%);--anki-subtle-surface:hsl(0 1% 33% / 8%)}.dark{--anki-foreground:hsl(0 0% 100%);--anki-subtle:hsl(0 0% 85%);--anki-background:hsl(0 0% 3%);--anki-primary:hsl(205 67% 62%);--anki-primary-darker:hsl(205 67% 54%);--anki-subtle-surface:hsl(0 0% 85% / 10%)}html{scroll-behavior:smooth}body{background:var(--anki-background);color:var(--anki-foreground)}#navbar{border-bottom:1px solid hsl(0 1% 33%/12%);background:color-mix(in srgb,var(--anki-background) 92%,transparent);backdrop-filter:blur(16px)}#page-title,mdx-content h1,mdx-content h2,mdx-content h3,nav-logo{letter-spacing:0}#page-title,mdx-content h1{color:var(--anki-foreground)}mdx-content li,mdx-content p{color:color-mix(in srgb,var(--anki-foreground) 82%,var(--anki-subtle))}card{border:1px solid hsl(0 1% 33%/14%);border-radius:8px;background:var(--anki-subtle-surface)}card:hover{border-color:var(--anki-primary)}#search-bar-entry,#search-bar-entry-mobile{border-radius:6px}#sidebar-content li[data-active],.nav-tabs-item[data-active]{color:var(--anki-primary)}.is-rtl #content-area{direction:rtl;text-align:right}.is-rtl #sidebar-content{text-align:right}.is-rtl #sidebar{direction:rtl}.is-rtl #content code,.is-rtl #content kbd,.is-rtl #content pre{direction:ltr;unicode-bidi:embed}.is-rtl #pagination a.ml-auto{margin-left:0;margin-right:auto}.is-rtl #pagination a.ml-auto svg{transform:none}.is-rtl #pagination a:not(.ml-auto) svg{transform:rotate(180deg)}.is-rtl #pagination a{gap:.75rem}.is-rtl #pagination a>*{margin-left:0;margin-right:0}"},{"filePath":"media/custom.css","content":"html[data-theme=light]{--pst-color-primary:#2563eb;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#1d4ed8;--pst-color-link:#2563eb;--pst-color-link-hover:#1d4ed8}html[data-theme=dark]{--pst-color-primary:#60a5fa;--pst-color-primary-text:#14181e;--pst-color-primary-highlight:#93c5fd;--pst-color-link:#60a5fa;--pst-color-link-hover:#93c5fd}"}],"page":{"pagePath":"addons/intro","slug":"/addons/intro","pageMetadata":{"title":"Introduction","description":null,"href":"/addons/intro"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`translations`,children:`Translations`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`日本語:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://t-cool.github.io/anki-addon-docs-ja/`,children:`https://t-cool.github.io/anki-addon-docs-ja/`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`http://rs.luminousspice.com/ankiaddons21/`,children:`http://rs.luminousspice.com/ankiaddons21/`})}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Anki’s UI is primarily written in Python/PyQt. A number of screens, such as the review\nscreen and editor, also make use of TypeScript and Svelte. To write add-ons, you will\nneed some basic programming experience, and some familiarity with Python. The `,_jsx(_components.a,{href:`http://docs.python.org/tutorial/`,children:`Python\ntutorial`}),` is a good place to start.`]}),`\n`,_jsx(_components.p,{children:`Add-ons in Anki are implemented as Python modules, which Anki loads at startup.\nThey can register themselves to be notified when certain actions take place (eg,\na hook that runs when the browse screen is loaded), and can make changes to the\nUI (e.g.adding a new menu item) when those actions take place.`}),`\n`,_jsxs(_components.p,{children:[`There is a `,_jsx(_components.a,{href:`https://github.com/ankitects/anki/blob/main/docs/architecture.md`,children:`brief overview of Anki’s\narchitecture`}),`\navailable.`]}),`\n`,_jsxs(_components.p,{children:[`While it is possible to develop Anki add-ons with just a plain text editor, you\ncan make your life much easier by using a proper code editor/IDE. Please see the `,_jsx(_components.a,{href:`/addons/editor-setup`,children:`Editor Setup`}),` section for more information.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Introduction","description":null,"href":"/addons/intro"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Translations","slug":"translations","depth":2,"children":[]},{"title":"Overview","slug":"overview","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/anki/77981acb4281d76b/rtl.js"],"subdomain":"anki","siteName":"Anki Docs","title":"Introduction - Anki Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/addons/intro","matchLevel":0},"de":{"href":"/de/manual/intro","matchLevel":4},"es":{"href":"/es/manual/intro","matchLevel":4},"fr":{"href":"/fr/manual/intro","matchLevel":4},"it":{"href":"/it/manual/intro","matchLevel":4},"id":{"href":"/id/manual/intro","matchLevel":4},"uz":{"href":"/uz/manual/intro","matchLevel":4},"pl":{"href":"/pl/manual/intro","matchLevel":4},"pt":{"href":"/pt/manual/intro","matchLevel":4},"ru":{"href":"/ru/manual/intro","matchLevel":4},"uk":{"href":"/uk/manual/intro","matchLevel":4},"ar":{"href":"/ar/manual/intro","matchLevel":4},"ja":{"href":"/ja/manual/intro","matchLevel":4},"zh-Hans":{"href":"/zh-Hans/manual/intro","matchLevel":4}}},"lastModified":"2026-10-09T15:27:00.576Z","originalFileLocation":"addons/intro.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Anki Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Introduction - Anki Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Anki Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ankiweb.net/addons/intro\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://anki.mintlify.app/_mintlify/api/og/v2?division=Add-on+Development\u0026amp;title=Introduction\u0026amp;theme=70ded8221bfa8a8da99af5c4\u0026amp;signature=6287176f80d3ee1658306e7276c367e2c3effe5b9f1957894de43d7141184d12\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Introduction - Anki Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://anki.mintlify.app/_mintlify/api/og/v2?division=Add-on+Development\u0026amp;title=Introduction\u0026amp;theme=70ded8221bfa8a8da99af5c4\u0026amp;signature=6287176f80d3ee1658306e7276c367e2c3effe5b9f1957894de43d7141184d12\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/anki/kxar50kkuAlF42Oy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Anki Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4B94D8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ankiweb.net/addons/intro\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/addons/intro.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ankiweb.net/#organization\",\"name\":\"Anki Docs\",\"url\":\"https://docs.ankiweb.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/anki/4yLyWj6_UVW-sSDI/media/anki-logo.svg?fit=max\u0026auto=format\u0026n=4yLyWj6_UVW-sSDI\u0026q=85\u0026s=6d1dc6938946ebdf46b57afa43c45a91\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ankiweb.net#website\",\"name\":\"Anki Docs\",\"url\":\"https://docs.ankiweb.net\",\"publisher\":{\"@id\":\"https://docs.ankiweb.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ankiweb.net/addons/intro#webpage\",\"url\":\"https://docs.ankiweb.net/addons/intro\",\"name\":\"Introduction\",\"dateModified\":\"2026-10-09T15:27:00.576Z\",\"isPartOf\":{\"@id\":\"https://docs.ankiweb.net#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ankiweb.net/addons/intro#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ankiweb.net/addons/intro#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anki Docs\",\"item\":\"https://docs.ankiweb.net\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://docs.ankiweb.net/addons/intro\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.ankiweb.net/addons/intro#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"url\":\"https://docs.ankiweb.net/addons/intro\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ankiweb.net/addons/intro#webpage\"},\"dateModified\":\"2026-10-09T15:27:00.576Z\",\"publisher\":{\"@id\":\"https://docs.ankiweb.net/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ankiweb.net#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Anki Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Anki Docs","nav":{"global":{"anchors":[{"anchor":"Anki","icon":"house","href":"https://apps.ankiweb.net"},{"anchor":"GitHub","icon":"github","href":"https://github.com/ankitects/anki"}]},"languages":[{"language":"en","tabs":[{"tab":"Manual","pages":[{"title":"Manual","href":"/manual/intro"}]},{"tab":"AnkiMobile","pages":[{"title":"AnkiMobile","href":"/ankimobile/intro"}]},{"tab":"FAQs","pages":[{"title":"FAQs","href":"/faqs/intro"}]},{"tab":"Add-ons","groups":[{"group":"Add-on Development","pages":[{"title":"Introduction","href":"/addons/intro"},{"title":"Support","description":null,"href":"/addons/support"},{"title":"Editor Setup","href":"/addons/editor-setup"},{"title":"MyPy","href":"/addons/mypy"},{"title":"Add-on Folders","href":"/addons/addon-folders"},{"title":"A Basic Add-on","href":"/addons/a-basic-addon"},{"title":"The 'anki' Module","href":"/addons/the-anki-module"},{"title":"Command-Line Use","href":"/addons/command-line-use"},{"title":"Hooks \u0026 Filters","sidebarTitle":"Hooks and Filters","href":"/addons/hooks-and-filters"},{"title":"Console Output","href":"/addons/console-output"},{"title":"Background Operations","href":"/addons/background-ops"},{"title":"Qt and PyQt","href":"/addons/qt"},{"title":"Python Modules","href":"/addons/python-modules"},{"title":"Add-on Config","href":"/addons/addon-config"},{"title":"Reviewer Javascript","href":"/addons/reviewer-javascript"},{"title":"Debugging","href":"/addons/debugging"},{"title":"Monkey Patching and Method Wrapping","sidebarTitle":"Monkey Patching","href":"/addons/monkey-patching"},{"title":"Sharing Add-ons","href":"/addons/sharing"},{"title":"Hooks Reference","href":"/addons/hooks-reference"},{"title":"Porting 2.1.x Add-ons","href":"/addons/porting2.1.x"},{"title":"Porting Anki 2.0 add-ons","href":"/addons/porting2.0"}]}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/developers/development"}]},{"tab":"Translators","pages":[{"title":"Translators","href":"/translators/intro"}]},{"tab":"Releases","pages":[{"title":"Releases","href":"/releases/betas/intro"}]}]},{"language":"de","pages":[{"title":"de","href":"/de/manual/intro"}]},{"language":"es","pages":[{"title":"es","href":"/es/manual/intro"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/manual/intro"}]},{"language":"it","pages":[{"title":"it","href":"/it/manual/intro"}]},{"language":"id","pages":[{"title":"id","href":"/id/manual/intro"}]},{"language":"uz","pages":[{"title":"uz","href":"/uz/manual/intro"}]},{"language":"pl","pages":[{"title":"pl","href":"/pl/manual/intro"}]},{"language":"pt","pages":[{"title":"pt","href":"/pt/manual/intro"}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/manual/intro"}]},{"language":"uk","pages":[{"title":"uk","href":"/uk/manual/intro"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/manual/intro"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/manual/intro"}]},{"language":"zh-Hans","pages":[{"title":"zh-Hans","href":"/zh-Hans/manual/intro"}]}]},"title":"Introduction - Anki Docs","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}