CINXE.COM
Extension:VisualEditor - MediaWiki
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Extension:VisualEditor - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"a7c9192a-700b-424e-8bb1-7ad622c0719a","wgCanonicalNamespace":"Extension","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":102,"wgPageName":"Extension:VisualEditor","wgTitle":"VisualEditor","wgCurRevisionId":6811624,"wgRevisionId":6811624,"wgArticleId":71727,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Extensions with release branches compatibility policy","Extensions bundled with MediaWiki 1.35","Stable extensions","Page action extensions","Extended syntax extensions","Beta Feature extensions","Skin extensions","MIT licensed extensions","Extensions in Wikimedia version control","BeforeInitialize extensions","BeforePageDisplay extensions","ChangeTagsListActive extensions","CustomEditor extensions","DifferenceEngineViewHeader extensions", "EditPage::showEditForm:fields extensions","GetBetaFeaturePreferences extensions","GetPreferences extensions","ListDefinedTags extensions","MakeGlobalVariablesScript extensions","OutputPageBodyAttributes extensions","ParserTestGlobals extensions","PreferencesFormPreSave extensions","RecentChange save extensions","RedirectSpecialArticleRedirectParams extensions","ResourceLoaderGetConfigVars extensions","ResourceLoaderRegisterModules extensions","SkinEditSectionLinks extensions","SkinTemplateNavigation::Universal extensions","TextSlotDiffRendererTablePrefix extensions","UserLoggedIn extensions","All extensions","Extensions used on Wikimedia","Extensions included in BlueSpice","Extensions included in Canasta","Extensions available as Debian packages","Extensions included in Fandom","Extensions included in Miraheze","Extensions included in MyWikis","Extensions included in Open CSP","Extensions included in ProWiki","Extensions included in semantic::core","Extensions included in ShoutWiki", "Extensions included in Telepedia","Extensions included in wiki.gg","Extensions included in WikiForge","WYSIWYG extensions","VisualEditor"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Extension:VisualEditor","wgRelevantArticleId":71727,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["autoconfirmed"],"wgRestrictionMove":[],"wgNoticeProject":"mediawiki","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false, "wgWikibaseItemId":"Q21679100","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","ext.cite.ux-enhancements","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap", "ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/1200px-VisualEditor-logo.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="421"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/800px-VisualEditor-logo.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="281"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/640px-VisualEditor-logo.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="225"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Extension:VisualEditor - MediaWiki"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Extension:VisualEditor"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Extension:VisualEditor"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-102 ns-subject page-Extension_VisualEditor rootpage-Extension_VisualEditor skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q21679100#sitelinks-wikipedia" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search MediaWiki [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Extension%3AVisualEditor" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Extension%3AVisualEditor" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Extension%3AVisualEditor" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Extension%3AVisualEditor" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Installation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Installation"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Installation</span> </div> </a> <ul id="toc-Installation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Download" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Download"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Download</span> </div> </a> <button aria-controls="toc-Download-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Download subsection</span> </button> <ul id="toc-Download-sublist" class="vector-toc-list"> <li id="toc-For_the_General_User" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#For_the_General_User"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>For the General User</span> </div> </a> <ul id="toc-For_the_General_User-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-If_you_are_using_Git" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#If_you_are_using_Git"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>If you are using Git</span> </div> </a> <ul id="toc-If_you_are_using_Git-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Skin_compatibility" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Skin_compatibility"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Skin compatibility</span> </div> </a> <ul id="toc-Skin_compatibility-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Setting_up_VisualEditor" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Setting_up_VisualEditor"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Setting up VisualEditor</span> </div> </a> <button aria-controls="toc-Setting_up_VisualEditor-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Setting up VisualEditor subsection</span> </button> <ul id="toc-Setting_up_VisualEditor-sublist" class="vector-toc-list"> <li id="toc-Short_URLs_on_Apache" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Short_URLs_on_Apache"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Short URLs on Apache</span> </div> </a> <ul id="toc-Short_URLs_on_Apache-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Enabling_the_write_API" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Enabling_the_write_API"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Enabling the write API</span> </div> </a> <ul id="toc-Enabling_the_write_API-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Linking_with_Parsoid" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Linking_with_Parsoid"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Linking with Parsoid</span> </div> </a> <ul id="toc-Linking_with_Parsoid-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Allowing_VisualEditor_on_page_titles_containing_slashes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Allowing_VisualEditor_on_page_titles_containing_slashes"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Allowing VisualEditor on page titles containing slashes</span> </div> </a> <ul id="toc-Allowing_VisualEditor_on_page_titles_containing_slashes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Enabling_VisualEditor" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Enabling_VisualEditor"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Enabling VisualEditor</span> </div> </a> <ul id="toc-Enabling_VisualEditor-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changing_active_namespaces" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changing_active_namespaces"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Changing active namespaces</span> </div> </a> <ul id="toc-Changing_active_namespaces-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Switching_between_wikitext_and_visual_editing" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Switching_between_wikitext_and_visual_editing"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>Switching between wikitext and visual editing</span> </div> </a> <ul id="toc-Switching_between_wikitext_and_visual_editing-sublist" class="vector-toc-list"> <li id="toc-RESTBase_setup_for_switching" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#RESTBase_setup_for_switching"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7.1</span> <span>RESTBase setup for switching</span> </div> </a> <ul id="toc-RESTBase_setup_for_switching-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Servers_with_multiple_virtual_sites" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Servers_with_multiple_virtual_sites"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.8</span> <span>Servers with multiple virtual sites</span> </div> </a> <ul id="toc-Servers_with_multiple_virtual_sites-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Linking_with_Parsoid_in_private_wikis" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Linking_with_Parsoid_in_private_wikis"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.9</span> <span>Linking with Parsoid in private wikis</span> </div> </a> <ul id="toc-Linking_with_Parsoid_in_private_wikis-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Quick_configuration_guide" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Quick_configuration_guide"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Quick configuration guide</span> </div> </a> <ul id="toc-Quick_configuration_guide-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Complete_list_of_configuration_options" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Complete_list_of_configuration_options"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Complete list of configuration options</span> </div> </a> <button aria-controls="toc-Complete_list_of_configuration_options-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Complete list of configuration options subsection</span> </button> <ul id="toc-Complete_list_of_configuration_options-sublist" class="vector-toc-list"> <li id="toc-Related_configuration_parameters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Related_configuration_parameters"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span> <span>Related configuration parameters</span> </div> </a> <ul id="toc-Related_configuration_parameters-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Integration_of_"2017_wikitext_editor"" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Integration_of_"2017_wikitext_editor""> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Integration of "2017 wikitext editor"</span> </div> </a> <ul id="toc-Integration_of_"2017_wikitext_editor"-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Rich_template_forms" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Rich_template_forms"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Rich template forms</span> </div> </a> <ul id="toc-Rich_template_forms-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Improved_citation_tool" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Improved_citation_tool"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Improved citation tool</span> </div> </a> <ul id="toc-Improved_citation_tool-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Hooks" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Hooks"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Hooks</span> </div> </a> <ul id="toc-Hooks-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Troubleshooting" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Troubleshooting"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Troubleshooting</span> </div> </a> <ul id="toc-Troubleshooting-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Development_documentation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Development_documentation"> <div class="vector-toc-text"> <span class="vector-toc-numb">13</span> <span>Development documentation</span> </div> </a> <ul id="toc-Development_documentation-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Extension</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">VisualEditor</span></h1> <div class="mw-indicators"> <div id="mw-indicator-phabricator-project" class="mw-indicator"><div class="mw-parser-output"><div class="mw-parser-output"><style data-mw-deduplicate="TemplateStyles:r6605561">.mw-parser-output .tpl-badge{background-color:var(--background-color-progressive-subtle,#eaf3ff);color:var(--color-base,#202122);border-radius:10px;display:inline-block;font-size:90%;padding:5px 8px}</style><div class="tpl-badge"><a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Issue tracker</a>: <a href="https://phabricator.wikimedia.org/tag/visualeditor/" class="extiw" title="phab:tag/visualeditor/"><b>#visualeditor</b></a></div></div></div></div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-extension" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Extension:VisualEditor" title="View the subject page [c]" accesskey="c"><span>Extension</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Extension_talk:VisualEditor" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Extension:VisualEditor"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Extension:VisualEditor"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Extension:VisualEditor" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Extension:VisualEditor" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&oldid=6811624" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Extension%3AVisualEditor&id=6811624&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FExtension%3AVisualEditor"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FExtension%3AVisualEditor"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Extension%3AVisualEditor"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Extension%3AVisualEditor&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Extension:VisualEditor&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q21679100" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r6651107">.mw-parser-output .note{background-position:left 7px top 50%;padding:0.5em 0.5em 0.5em 40px;margin:0.5em 0;overflow:hidden;background-color:#f8f9fa;color:#333;background-repeat:no-repeat;border:1px solid #ddd}.mw-parser-output .note-inline{display:inline-block;vertical-align:middle}.mw-parser-output .note-info{background-color:#eaf3ff;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg");background-size:25px;border-color:#a3caff;padding-left:40px;min-height:25px}.mw-parser-output .note-reminder{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-warn{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-error{background-color:#fee7e6;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg");background-size:25px;border-color:#c33;min-height:25px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .note{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .note{background-color:transparent;color:inherit}}</style><div role="note" class="note note-info">This extension <a href="/wiki/Special:MyLanguage/MediaWiki_1.35#Bundled_extensions" title="Special:MyLanguage/MediaWiki 1.35">comes with MediaWiki 1.35</a> and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.</div><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">The setup process for VisualEditor was simplified significantly with MediaWiki 1.35, when Parsoid was integrated into core MediaWiki. The following instructions assume the use of MW 1.35 or higher; if you are using an older version, please see <a href="/wiki/Special:PermanentLink/4040509" title="Special:PermanentLink/4040509">this old version of the page</a>.</div><style data-mw-deduplicate="TemplateStyles:r6870138">.mw-parser-output table.ambox{margin:0 10%;width:unset;border:1px solid var(--border-color-base,#a2a9b1);border-left:10px solid var(--border-color-progressive,#36c);background-color:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box}.mw-parser-output table.ambox+table.ambox,.mw-parser-output table.ambox+link+table.ambox,.mw-parser-output table.ambox+style+table.ambox{margin-top:-1px}.mw-parser-output .ambox td.mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox th.mbox-text,.mw-parser-output .ambox td.mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox td.mbox-image{padding:2px 0 2px 0.5em}.mw-parser-output .ambox td.mbox-imageright{padding:2px 0.5em 2px 0}.mw-parser-output table.ambox-notice{border-left-color:var(--border-color-progressive,#36c)}.mw-parser-output table.ambox-speedy{background-color:var(--background-color-error-subtle,#fee7e6)}.mw-parser-output table.ambox-delete,.mw-parser-output table.ambox-speedy{border-left-color:var(--background-color-error--active,#b32424)}.mw-parser-output table.ambox-content{border-left-color:#f28500}.mw-parser-output table.ambox-style{border-left-color:#fc3}.mw-parser-output table.ambox-move{border-left-color:#9932cc}.mw-parser-output table.ambox-protection{border-left-color:var(--border-color-base,#a2a9b1)}html body.mediawiki .mw-parser-output .ambox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;box-sizing:border-box;width:238px;font-size:88%;line-height:1.25em}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;box-sizing:border-box;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}</style><table class="ambox ambox-speedy plainlinks metadata" role="presentation"><tbody><tr><td class="mbox-image"><div style="width:52px"><span class="skin-invert-image" typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/OOjs_UI_icon_language-ltr.svg/40px-OOjs_UI_icon_language-ltr.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/OOjs_UI_icon_language-ltr.svg/60px-OOjs_UI_icon_language-ltr.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/OOjs_UI_icon_language-ltr.svg/80px-OOjs_UI_icon_language-ltr.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span"><b>Please do not mark this page for translation yet.</b> <br /> It is still being drafted, or it contains incomplete translation markup which should be fixed before marking for translation.</div></td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r6651102">.mw-parser-output .infobox{box-sizing:border-box;border:2px solid var(--border-color-base,#a2a9b1);width:280px;border-collapse:collapse;border-spacing:0;background-color:white;color:#333;clear:right;float:right;margin:0 0 0.5em 0.5em}.mw-parser-output .infobox-rtl{clear:left;float:left;margin:0 0.5em 0.5em 0}.mw-parser-output .infobox th{text-align:left;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-rtl th{text-align:right}@media(max-width:719px){body.mediawiki .mw-parser-output .infobox{float:none;clear:both;width:100%;margin:0 0 .5em 0}}.mw-parser-output .infobox td{border:none;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-header{background-color:#a2a9b1;color:#FFF;text-align:left}.mw-parser-output .infobox-header a{color:#FFF}.mw-parser-output .infobox-header td,.mw-parser-output .infobox-header th{padding:0.5em 0.5em}.mw-parser-output .infobox-header img{padding:0 0.2em 0 0.5em}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox{background-color:inherit;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox{background-color:inherit;color:inherit}}</style><style data-mw-deduplicate="TemplateStyles:r5577029">.mw-parser-output .ext-infobox>tbody>tr>td:first-child{vertical-align:top}.mw-parser-output .ext-infobox>tbody>tr>td abbr{white-space:nowrap}.mw-parser-output .ext-infobox .mw-collapsible-header,.mw-parser-output .ext-infobox .mw-collapsible-toggle{font-weight:bold}.mw-parser-output .ext-infobox .mw-collapsible-content{margin-top:.2em;padding-top:.2em}.mw-parser-output .ext-infobox-header>th,.mw-parser-output .ext-infobox caption,.mw-parser-output .ext-infobox-image,.mw-parser-output .ext-infobox-translate{text-align:center}.mw-parser-output .ext-infobox-name{font-size:130%;line-height:100%}.mw-parser-output .ext-infobox-type{min-width:7em}</style><style data-mw-deduplicate="TemplateStyles:r6424453">.mw-parser-output .ext-status-unstable,.mw-parser-output .ext-status-unstable td{border-color:#d33}.mw-parser-output .ext-status-unstable .ext-infobox-header{background-color:#d33;color:#fff}.mw-parser-output .ext-status-unstable .ext-infobox-header a{color:#fff}.mw-parser-output .ext-status-experimental,.mw-parser-output .ext-status-experimental td{border-color:#ff4500}.mw-parser-output .ext-status-experimental .ext-infobox-header{background-color:#ff4500;color:#FFF}.mw-parser-output .ext-status-experimental .ext-infobox-header a{color:#FFF}.mw-parser-output .ext-status-beta,.mw-parser-output .ext-status-beta td{border-color:#fc3}.mw-parser-output .ext-status-beta .ext-infobox-header{color:#000;background-color:#fc3}.mw-parser-output .ext-status-beta .ext-infobox-header a{color:#000}.mw-parser-output .ext-status-stable,.mw-parser-output .ext-status-stable td{border-color:#00af89}.mw-parser-output .ext-status-stable .ext-infobox-header{background-color:#068468;color:#FFF}.mw-parser-output .ext-status-stable .ext-infobox-header a{color:#fff}.mw-parser-output .ext-status-unmaintained,.mw-parser-output .ext-status-unmaintained td{border-color:#ac6600}.mw-parser-output .ext-status-unmaintained .ext-infobox-header{background-color:#ac6600;color:#FFF}.mw-parser-output .ext-status-unmaintained .ext-infobox-header a{color:#fff}</style> <table class="infobox infobox-ltr ext-infobox ext-status-stable"> <caption><b><a href="/wiki/Special:MyLanguage/Manual:Extensions" title="Special:MyLanguage/Manual:Extensions">MediaWiki extensions manual</a><span style="display:none"><a href="/wiki/Manual:Extensions" title="Manual:Extensions"> </a></span></b></caption> <tbody><tr class="infobox-header ext-infobox-header notheme"> <th colspan="2"><figure class="mw-halign-left" typeof="mw:File"><a href="/wiki/Special:MyLanguage/Template:Extension#Content" title="Special:MyLanguage/Template:Extension"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/40px-OOjs_UI_icon_advanced-invert.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/60px-OOjs_UI_icon_advanced-invert.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1b/OOjs_UI_icon_advanced-invert.svg/80px-OOjs_UI_icon_advanced-invert.svg.png 2x" data-file-width="20" data-file-height="20" /></a><figcaption></figcaption></figure> <span class="ext-infobox-name">VisualEditor</span><br /> <a href="/wiki/Special:MyLanguage/Extension_status" title="Special:MyLanguage/Extension status">Release status:</a><span style="display:none"><a href="/wiki/Extension_status" title="Extension status"> </a></span> stable</th> </tr> <tr> <td colspan="2" class="ext-infobox-image"><span typeof="mw:File"><a href="/wiki/File:VisualEditor-logo.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/300px-VisualEditor-logo.svg.png" decoding="async" width="300" height="105" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/450px-VisualEditor-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/12/VisualEditor-logo.svg/600px-VisualEditor-logo.svg.png 2x" data-file-width="641" data-file-height="225" /></a></span></td> </tr> <tr> <td class="ext-infobox-type"><b><a href="/wiki/Special:MyLanguage/Template:Extension#type" title="Special:MyLanguage/Template:Extension">Implementation</a><span style="display:none"><a href="/wiki/Template:Extension#type" title="Template:Extension"> </a></span></b></td> <td><a href="/wiki/Special:MyLanguage/Manual:Parameters_to_index.php#Actions" title="Special:MyLanguage/Manual:Parameters to index.php">Page action</a><span style="display:none"><a href="/wiki/Manual:Parameters_to_index.php#Actions" title="Manual:Parameters to index.php"> </a></span>, <a href="/wiki/Special:MyLanguage/Manual:Extending_wiki_markup" title="Special:MyLanguage/Manual:Extending wiki markup">Extended syntax</a><span style="display:none"><a href="/wiki/Manual:Extending_wiki_markup" title="Manual:Extending wiki markup"> </a></span>, <a href="/wiki/Special:MyLanguage/Beta_Features" title="Special:MyLanguage/Beta Features">Beta Feature</a><span style="display:none"><a href="/wiki/Beta_Features" title="Beta Features"> </a></span>, <a href="/wiki/Special:MyLanguage/Manual:Skins" title="Special:MyLanguage/Manual:Skins">Skin</a><span style="display:none"><a href="/wiki/Manual:Skins" title="Manual:Skins"> </a></span> </td></tr><tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#description" title="Special:MyLanguage/Template:Extension">Description</a><span style="display:none"><a href="/wiki/Template:Extension#description" title="Template:Extension"> </a></span></b></td> <td>Allows for editing pages as rich content</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#username" title="Special:MyLanguage/Template:Extension">Author(s)</a><span style="display:none"><a href="/wiki/Template:Extension#username" title="Template:Extension"> </a></span></b></td> <td>Alex Monk, Bartosz Dziewoński, C. Scott Ananian, Christian Williams, David Lynch, Ed Sanders, Inez Korczyński, James D. Forrester, Moriel Schottlender, Roan Kattouw, Rob Moen, Subramanya Sastry, Thalia Chan, Timo Tijhof, Trevor Parscal, ...</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#version" title="Special:MyLanguage/Template:Extension">Latest version</a><span style="display:none"><a href="/wiki/Template:Extension#version" title="Template:Extension"> </a></span></b></td> <td>continuous updates</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Compatibility#mediawiki_extensions" title="Special:MyLanguage/Compatibility">Compatibility policy</a><span style="display:none"><a href="/wiki/Compatibility#mediawiki_extensions" title="Compatibility"> </a></span></b></td> <td>Snapshots releases along with MediaWiki. Master is not backward compatible.</td> </tr> <tr> <td><a href="/wiki/Special:MyLanguage/Template:Extension#mediawiki" title="Special:MyLanguage/Template:Extension"><b>MediaWiki</b></a><span style="display:none"><a href="/wiki/Template:Extension#mediawiki" title="Template:Extension"> </a></span></td> <td>>= 1.43</td> </tr> <tr> <td><a href="/wiki/Special:MyLanguage/Template:Extension#needs-updatephp" title="Special:MyLanguage/Template:Extension"><abbr title="'php update.php' needed after installation"><b>Database changes</b></abbr></a><span style="display:none"><a href="/wiki/Template:Extension#needs-updatephp" title="Template:Extension"> </a></span></td> <td>No</td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#license" title="Special:MyLanguage/Template:Extension">License</a><span style="display:none"><a href="/wiki/Template:Extension#license" title="Template:Extension"> </a></span></b></td> <td><a rel="nofollow" class="external text" href="//opensource.org/licenses/mit-license.php">MIT License</a></td> </tr><tr> <td><b>Download</b></td> <td><div class="plainlinks"><a href="/wiki/Special:ExtensionDistributor/VisualEditor" title="Special:ExtensionDistributor/VisualEditor"><b>Download extension</b></a> <br />Git <sup>[<a href="/wiki/Special:MyLanguage/Download_from_Git" title="Special:MyLanguage/Download from Git">?</a>]</sup>: <ul><li><span class="plainlinks"><a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-VisualEditor/archive/master.tar.gz">Download Git master</a></span></li> <li><a href="https://gerrit.wikimedia.org/g/mediawiki/extensions/VisualEditor" class="extiw" title="git:mediawiki/extensions/VisualEditor">browse repository</a> (<a href="https://phabricator.wikimedia.org/diffusion/EVED" class="extiw" title="phab:diffusion/EVED">Phabricator</a> · <a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-VisualEditor">GitHub</a>)</li> <li><a href="https://gerrit.wikimedia.org/g/mediawiki/extensions/VisualEditor/%2Blog/master" class="extiw" title="git:mediawiki/extensions/VisualEditor/+log/master">commit history</a></li> <li><a rel="nofollow" class="external text" href="https://github.com/wikimedia/mediawiki-extensions-VisualEditor/graphs/contributors">repository contributors (GitHub)</a></li> <li><a href="https://gerrit.wikimedia.org/r/q/project:mediawiki/extensions/VisualEditor" class="extiw" title="gerrit:q/project:mediawiki/extensions/VisualEditor">code review</a></li></ul></div><br /><a href="https://gerrit.wikimedia.org/g/mediawiki/extensions/VisualEditor/%2B/master/README.md" class="extiw" title="git:mediawiki/extensions/VisualEditor/+/master/README.md">README</a></td> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/Template:Extension#help" title="Special:MyLanguage/Template:Extension">Help</a><span style="display:none"><a href="/wiki/Template:Extension#help" title="Template:Extension"> </a></span></b></td> <td><a href="/wiki/Special:MyLanguage/Help:VisualEditor/User_guide" title="Special:MyLanguage/Help:VisualEditor/User guide">Help:VisualEditor/User guide</a><span style="display:none"><a href="/wiki/Help:VisualEditor/User_guide" title="Help:VisualEditor/User guide"> </a></span></td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#parameters" title="Special:MyLanguage/Template:Extension">Parameters</a><span style="display:none"><a href="/wiki/Template:Extension#parameters" title="Template:Extension"> </a></span></div> <div class="mw-collapsible-content"> <ul><li><span class="configvariable" title="BetaFeatures integration has been removed. This option allows using the old beta feature preference values ('visualeditor-enable') on wikis where it was previously enabled, until it is migrated (T344762).">$wgVisualEditorEnableBetaFeature</span></li> <li><span class="configvariable" title="Enable the experimental ve.collab beta feature.">$wgVisualEditorEnableCollabBeta</span></li> <li><span class="configvariable">$wgVisualEditorTabPosition</span></li> <li><span class="configvariable">$wgVisualEditorFeedbackAPIURL</span></li> <li><span class="configvariable">$wgVisualEditorAvailableContentModels</span></li> <li><span class="configvariable" title="Do not change the edit tabs/links for anon users, regardless of other settings. Does not affect temporary users. Note that this does not actually disable the visual editor, contrary to the name, and you should probably set the user preferences so that wikitext editor is the default. (T253941)">$wgVisualEditorDisableForAnons</span></li> <li><span class="configvariable">$wgVisualEditorUseSingleEditTab</span></li> <li><span class="configvariable">$wgVisualEditorEnableTocWidget</span></li> <li><span class="configvariable">$wgVisualEditorEnableHelpCompletion</span></li> <li><span class="configvariable">$wgVisualEditorTabMessages</span></li> <li><span class="configvariable">$wgVisualEditorAvailableNamespaces</span></li> <li><span class="configvariable">$wgVisualEditorRebaserURL</span></li> <li><span class="configvariable">$wgVisualEditorFeedbackTitle</span></li> <li><span class="configvariable" title="Enable experimental Edit Check feature. Can also be enabled using ?ecenable=1.">$wgVisualEditorEditCheck</span></li> <li><span class="configvariable" title="Tag edits as having used visualeditor, or VE's wikitext mode.">$wgVisualEditorUseChangeTagging</span></li> <li><span class="configvariable">$wgVisualEditorSkinToolbarScrollOffset</span></li> <li><span class="configvariable">$wgVisualEditorAllowExternalLinkPaste</span></li> <li><span class="configvariable" title="Make the wikitext mode of VE available (also called 2017 Wikitext Editor). The corresponding per-user options is visualeditor-newwikitext.">$wgVisualEditorEnableWikitext</span></li> <li><span class="configvariable" title="For testing only. Tag edits for the Edit Check project.">$wgVisualEditorEditCheckTagging</span></li> <li><span class="configvariable">$wgVisualEditorSourceFeedbackTitle</span></li> <li><span class="configvariable">$wgVisualEditorPreloadModules</span></li> <li><span class="configvariable" title="A/B test Edit Check for all users. A/B bucket status will override VisualEditorEditCheck.">$wgVisualEditorEditCheckABTest</span></li> <li><span class="configvariable">$wgVisualEditorSingleEditTabSwitchTime</span></li> <li><span class="configvariable">$wgVisualEditorShowBetaWelcome</span></li> <li><span class="configvariable">$wgVisualEditorSingleEditTabSwitchTimeEnd</span></li> <li><span class="configvariable">$wgVisualEditorPluginModules</span></li> <li><span class="configvariable">$wgVisualEditorEnableVisualSectionEditing</span></li></ul></div></td> </tr> <tr> <td class="mw-collapsible mw-collapsed" colspan="2"> <div class="mw-collapsible-header"><a href="/wiki/Special:MyLanguage/Template:Extension#hook" title="Special:MyLanguage/Template:Extension">Hooks used</a><span style="display:none"><a href="/wiki/Template:Extension#hook" title="Template:Extension"> </a></span></div> <style data-mw-deduplicate="TemplateStyles:r6219282">.mw-parser-output .plainlist ul{line-height:inherit;list-style:none none;margin:0}.mw-parser-output .plainlist ul li{margin-bottom:0}</style><div class="plainlist mw-collapsible-content"><ul><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/BeforeInitialize" title="Special:MyLanguage/Manual:Hooks/BeforeInitialize">BeforeInitialize</a><span style="display:none"><a href="/wiki/Manual:Hooks/BeforeInitialize" title="Manual:Hooks/BeforeInitialize"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/BeforePageDisplay" title="Special:MyLanguage/Manual:Hooks/BeforePageDisplay">BeforePageDisplay</a><span style="display:none"><a href="/wiki/Manual:Hooks/BeforePageDisplay" title="Manual:Hooks/BeforePageDisplay"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ChangeTagsListActive" title="Special:MyLanguage/Manual:Hooks/ChangeTagsListActive">ChangeTagsListActive</a><span style="display:none"><a href="/wiki/Manual:Hooks/ChangeTagsListActive" title="Manual:Hooks/ChangeTagsListActive"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/CustomEditor" title="Special:MyLanguage/Manual:Hooks/CustomEditor">CustomEditor</a><span style="display:none"><a href="/wiki/Manual:Hooks/CustomEditor" title="Manual:Hooks/CustomEditor"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/DifferenceEngineViewHeader" title="Special:MyLanguage/Manual:Hooks/DifferenceEngineViewHeader">DifferenceEngineViewHeader</a><span style="display:none"><a href="/wiki/Manual:Hooks/DifferenceEngineViewHeader" title="Manual:Hooks/DifferenceEngineViewHeader"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/EditPage::showEditForm:fields" title="Special:MyLanguage/Manual:Hooks/EditPage::showEditForm:fields">EditPage::showEditForm:fields</a><span style="display:none"><a href="/wiki/Manual:Hooks/EditPage::showEditForm:fields" title="Manual:Hooks/EditPage::showEditForm:fields"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/GetBetaFeaturePreferences" title="Special:MyLanguage/Manual:Hooks/GetBetaFeaturePreferences">GetBetaFeaturePreferences</a><span style="display:none"><a href="/wiki/Manual:Hooks/GetBetaFeaturePreferences" class="mw-redirect" title="Manual:Hooks/GetBetaFeaturePreferences"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/GetPreferences" title="Special:MyLanguage/Manual:Hooks/GetPreferences">GetPreferences</a><span style="display:none"><a href="/wiki/Manual:Hooks/GetPreferences" title="Manual:Hooks/GetPreferences"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ListDefinedTags" title="Special:MyLanguage/Manual:Hooks/ListDefinedTags">ListDefinedTags</a><span style="display:none"><a href="/wiki/Manual:Hooks/ListDefinedTags" title="Manual:Hooks/ListDefinedTags"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/MakeGlobalVariablesScript" title="Special:MyLanguage/Manual:Hooks/MakeGlobalVariablesScript">MakeGlobalVariablesScript</a><span style="display:none"><a href="/wiki/Manual:Hooks/MakeGlobalVariablesScript" title="Manual:Hooks/MakeGlobalVariablesScript"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/OutputPageBodyAttributes" title="Special:MyLanguage/Manual:Hooks/OutputPageBodyAttributes">OutputPageBodyAttributes</a><span style="display:none"><a href="/wiki/Manual:Hooks/OutputPageBodyAttributes" title="Manual:Hooks/OutputPageBodyAttributes"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ParserTestGlobals" title="Special:MyLanguage/Manual:Hooks/ParserTestGlobals">ParserTestGlobals</a><span style="display:none"><a href="/wiki/Manual:Hooks/ParserTestGlobals" title="Manual:Hooks/ParserTestGlobals"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/PreferencesFormPreSave" title="Special:MyLanguage/Manual:Hooks/PreferencesFormPreSave">PreferencesFormPreSave</a><span style="display:none"><a href="/wiki/Manual:Hooks/PreferencesFormPreSave" title="Manual:Hooks/PreferencesFormPreSave"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/RecentChange_save" title="Special:MyLanguage/Manual:Hooks/RecentChange save">RecentChange_save</a><span style="display:none"><a href="/wiki/Manual:Hooks/RecentChange_save" title="Manual:Hooks/RecentChange save"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/RedirectSpecialArticleRedirectParams" title="Special:MyLanguage/Manual:Hooks/RedirectSpecialArticleRedirectParams">RedirectSpecialArticleRedirectParams</a><span style="display:none"><a href="/wiki/Manual:Hooks/RedirectSpecialArticleRedirectParams" title="Manual:Hooks/RedirectSpecialArticleRedirectParams"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ResourceLoaderGetConfigVars" title="Special:MyLanguage/Manual:Hooks/ResourceLoaderGetConfigVars">ResourceLoaderGetConfigVars</a><span style="display:none"><a href="/wiki/Manual:Hooks/ResourceLoaderGetConfigVars" title="Manual:Hooks/ResourceLoaderGetConfigVars"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/ResourceLoaderRegisterModules" title="Special:MyLanguage/Manual:Hooks/ResourceLoaderRegisterModules">ResourceLoaderRegisterModules</a><span style="display:none"><a href="/wiki/Manual:Hooks/ResourceLoaderRegisterModules" title="Manual:Hooks/ResourceLoaderRegisterModules"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SkinEditSectionLinks" title="Special:MyLanguage/Manual:Hooks/SkinEditSectionLinks">SkinEditSectionLinks</a><span style="display:none"><a href="/wiki/Manual:Hooks/SkinEditSectionLinks" title="Manual:Hooks/SkinEditSectionLinks"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/SkinTemplateNavigation::Universal" title="Special:MyLanguage/Manual:Hooks/SkinTemplateNavigation::Universal">SkinTemplateNavigation::Universal</a><span style="display:none"><a href="/wiki/Manual:Hooks/SkinTemplateNavigation::Universal" title="Manual:Hooks/SkinTemplateNavigation::Universal"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/TextSlotDiffRendererTablePrefix" title="Special:MyLanguage/Manual:Hooks/TextSlotDiffRendererTablePrefix">TextSlotDiffRendererTablePrefix</a><span style="display:none"><a href="/wiki/Manual:Hooks/TextSlotDiffRendererTablePrefix" title="Manual:Hooks/TextSlotDiffRendererTablePrefix"> </a></span></li><li><a href="/wiki/Special:MyLanguage/Manual:Hooks/UserLoggedIn" title="Special:MyLanguage/Manual:Hooks/UserLoggedIn">UserLoggedIn</a><span style="display:none"><a href="/wiki/Manual:Hooks/UserLoggedIn" title="Manual:Hooks/UserLoggedIn"> </a></span></li></ul></div> </td> </tr> <tr> <td title="This only includes downloads from Special:ExtensionDistributor. Other download methods such as git or bundled extensions are not included."><b>Quarterly downloads</b></td> <td>748 (Ranked 4<sup>th</sup>)</td> </tr> <tr> <td title=""><a rel="nofollow" class="external text" href="https://wikiapiary.com/wiki/Extension:VisualEditor"><b>Public wikis using</b></a></td> <td>7,436 (Ranked 19<sup>th</sup>)</td> </tr> <tr> <td colspan="2" class="ext-infobox-translate"> <a href="https://translatewiki.net/wiki/Special:Translate/ext-visualeditor-0-all" class="extiw" title="translatewiki:Special:Translate/ext-visualeditor-0-all">Translate the VisualEditor extension</a></td> </tr><tr class="mw-empty-elt"> </tr> <tr> <td><b><a href="/wiki/Special:MyLanguage/MediaWiki-Vagrant#Using_roles" title="Special:MyLanguage/MediaWiki-Vagrant">Vagrant role</a><span style="display:none"><a href="/wiki/MediaWiki-Vagrant#Using_roles" title="MediaWiki-Vagrant"> </a></span></b></td> <td><a class="external text" href="https://doc.wikimedia.org/mediawiki-vagrant/puppet_classes/role_3A_3Avisualeditor.html">visualeditor</a></td> </tr> <tr> <td> <b><a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Issues</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span></b></td> <td><a href="https://phabricator.wikimedia.org/tag/visualeditor" class="extiw" title="phab:tag/visualeditor">Open tasks</a> · <a class="external text" href="https://phabricator.wikimedia.org/maniphest/task/create/?projects=visualeditor">Report a bug</a></td> </tr> </tbody></table> <p>The <b>VisualEditor</b> extension allows for editing pages as rich content. It is based around a JavaScript library, also called "VisualEditor", that can potentially be used outside of MediaWiki as well. This page covers instructions for installing and configuring the VisualEditor extension. For help on using it, see <a href="/wiki/Special:MyLanguage/Help:VisualEditor/User_guide" title="Special:MyLanguage/Help:VisualEditor/User guide">Help:VisualEditor/User guide</a><span style="display:none"><a href="/wiki/Help:VisualEditor/User_guide" title="Help:VisualEditor/User guide"> </a></span>. For information on the development of the extension and the library, see <a href="/wiki/Special:MyLanguage/VisualEditor" title="Special:MyLanguage/VisualEditor">VisualEditor</a><span style="display:none"><a href="/wiki/VisualEditor" title="VisualEditor"> </a></span>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Installation">Installation</h2></div> <ul><li><a href="/wiki/Special:ExtensionDistributor/VisualEditor" title="Special:ExtensionDistributor/VisualEditor">Download</a> and move the extracted <code>VisualEditor</code> folder to your <code>extensions/</code> directory.<br />Developers and code contributors should install the extension <a href="/wiki/Special:MyLanguage/Download_from_Git" title="Special:MyLanguage/Download from Git">from Git</a> instead, using:<code class="mw-code mw-highlight" style="display:block">cd extensions/<br />git clone --recurse-submodules https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor</code></li> <li>Add the following code at the bottom of your <a href="/wiki/Special:MyLanguage/Manual:LocalSettings.php" title="Special:MyLanguage/Manual:LocalSettings.php">LocalSettings.php</a><span style="display:none"><a href="/wiki/Manual:LocalSettings.php" title="Manual:LocalSettings.php"> </a></span> file: <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">wfLoadExtension</span><span class="p">(</span> <span class="s1">'VisualEditor'</span> <span class="p">);</span> </pre></div></li> <li><span typeof="mw:File"><span><img alt="Yes" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/15px-OOjs_UI_icon_check-constructive.svg.png" decoding="async" width="15" height="15" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/23px-OOjs_UI_icon_check-constructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f6/OOjs_UI_icon_check-constructive.svg/30px-OOjs_UI_icon_check-constructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span> <b>Done</b> – Navigate to <a href="/wiki/Special:Version" title="Special:Version">Special:Version</a> on your wiki to verify that the extension is successfully installed.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Download">Download</h2></div> <div class="mw-heading mw-heading3"><h3 id="For_the_General_User">For the General User</h3></div> <p>If you downloaded the MediaWiki tarball, you do not need to download this extension. </p> <div class="mw-heading mw-heading3"><h3 id="If_you_are_using_Git">If you are using Git</h3></div> <p><span typeof="mw:File"><span><img alt="Note" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/OOjs_UI_icon_lightbulb-yellow.svg/18px-OOjs_UI_icon_lightbulb-yellow.svg.png" decoding="async" width="18" height="18" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/OOjs_UI_icon_lightbulb-yellow.svg/27px-OOjs_UI_icon_lightbulb-yellow.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a8/OOjs_UI_icon_lightbulb-yellow.svg/36px-OOjs_UI_icon_lightbulb-yellow.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span> <b>Note:</b> </p> <ul><li>VisualEditor’s master branch contains the latest code, as used at Wikimedia. This code is potentially slightly buggy or unstable, but is likely to have fewer bugs and more features than old builds.</li> <li><b>The master branch requires alpha builds of MediaWiki</b> and will not work with the older, official releases of MediaWiki like 1.39; for that, use the <code>REL1_39</code> branch (command: <code>git clone -b REL1_39 https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor.git</code>).</li> <li>The <code>git submodule update --init</code> command is vital, as VisualEditor MediaWiki extension needs the core VisualEditor submodule to work. <b>If you do not use this command, VisualEditor will fail to work</b>.</li> <li>See <a href="/wiki/Special:MyLanguage/Parsoid#Development" title="Special:MyLanguage/Parsoid">Parsoid § Development</a><span style="display:none"><a href="/wiki/Parsoid" title="Parsoid"> </a></span> for details on linking an alpha build of the Parsoid library up to VisualEditor; the latest version of VisualEditor <b>will</b> need a development version of Parsoid as well. <b>You must follow the instructions on the <a href="/wiki/Special:MyLanguage/Parsoid" title="Special:MyLanguage/Parsoid">Parsoid</a><span style="display:none"><a href="/wiki/Parsoid" title="Parsoid"> </a></span> page to configure Parsoid if you are installing VisualEditor from git, or using an alpha release of 1.36!</b> If you do not, VisualEditor will fail to work.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Skin_compatibility">Skin compatibility</h2></div> <p>VisualEditor is known to be compatible with the following skins: </p> <ul><li><a href="/wiki/Special:MyLanguage/Skin:Vector" title="Special:MyLanguage/Skin:Vector">Vector</a><span style="display:none"><a href="/wiki/Skin:Vector" title="Skin:Vector"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:MonoBook" title="Special:MyLanguage/Skin:MonoBook">MonoBook</a><span style="display:none"><a href="/wiki/Skin:MonoBook" title="Skin:MonoBook"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Timeless" title="Special:MyLanguage/Skin:Timeless">Timeless</a><span style="display:none"><a href="/wiki/Skin:Timeless" title="Skin:Timeless"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Chameleon" title="Special:MyLanguage/Skin:Chameleon">Chameleon</a><span style="display:none"><a href="/wiki/Skin:Chameleon" title="Skin:Chameleon"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Apex" title="Special:MyLanguage/Skin:Apex">Apex</a><span style="display:none"><a href="/wiki/Skin:Apex" title="Skin:Apex"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Poncho" title="Special:MyLanguage/Skin:Poncho">Poncho</a><span style="display:none"><a href="/wiki/Skin:Poncho" title="Skin:Poncho"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Minerva_Neue" title="Special:MyLanguage/Skin:Minerva Neue">Minerva Neue</a><span style="display:none"><a href="/wiki/Skin:Minerva_Neue" title="Skin:Minerva Neue"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Cosmos" title="Special:MyLanguage/Skin:Cosmos">Cosmos</a><span style="display:none"><a href="/wiki/Skin:Cosmos" title="Skin:Cosmos"> </a></span></li> <li>Minerva (was part of <a href="/wiki/Special:MyLanguage/Extension:MobileFrontend" title="Special:MyLanguage/Extension:MobileFrontend">MobileFrontend</a><span style="display:none"><a href="/wiki/Extension:MobileFrontend" title="Extension:MobileFrontend"> </a></span>)</li> <li><a href="/wiki/Special:MyLanguage/Skin:Modern" title="Special:MyLanguage/Skin:Modern">Modern</a><span style="display:none"><a href="/wiki/Skin:Modern" title="Skin:Modern"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Medik" title="Special:MyLanguage/Skin:Medik">Medik</a><span style="display:none"><a href="/wiki/Skin:Medik" title="Skin:Medik"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Skin:Citizen" title="Special:MyLanguage/Skin:Citizen">Citizen</a><span style="display:none"><a href="/wiki/Skin:Citizen" title="Skin:Citizen"> </a></span></li></ul> <p>Other skins are not officially supported, but it should be compatible with any skin that uses the required HTML structure – see <b><a href="/wiki/Special:MyLanguage/Extension:VisualEditor/Skin_requirements" title="Special:MyLanguage/Extension:VisualEditor/Skin requirements">VisualEditor/Skin requirements</a><span style="display:none"><a href="/wiki/Extension:VisualEditor/Skin_requirements" title="Extension:VisualEditor/Skin requirements"> </a></span></b>. Some fiddling with skin stylesheets might be necessary to make everything look nice. It will load on any skin if it matches the feature detection. </p> <div class="mw-heading mw-heading2"><h2 id="Setting_up_VisualEditor">Setting up VisualEditor</h2></div> <div class="mw-heading mw-heading3"><h3 id="Short_URLs_on_Apache">Short URLs on Apache</h3></div> <p>If you are using non-standard short URLs such as "https://wiki.example.org/Page_title" on Apache, you need to <a href="/wiki/Extension:VisualEditor/Apache_rewrite_rules_for_short_URLs" title="Extension:VisualEditor/Apache rewrite rules for short URLs">adapt the rewrite rules</a> for the web server. </p><p>VisualEditor will display some broken links if the wiki is not configured with Short Urls. See <a href="https://phabricator.wikimedia.org/T328337" class="extiw" title="phabricator:T328337">task T328337</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Enabling_the_write_API">Enabling the write API</h3></div> <p>The user groups who should be able to use VisualEditor must have access to the MediaWiki write API. <a href="/wiki/Special:MyLanguage/Manual:$wgGroupPermissions" title="Special:MyLanguage/Manual:$wgGroupPermissions">$wgGroupPermissions</a><span style="display:none"><a href="/wiki/Manual:$wgGroupPermissions" title="Manual:$wgGroupPermissions"> </a></span> needs to be set accordingly, e.g. for the user group named <i>user</i> this is done with: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgGroupPermissions</span><span class="p">[</span><span class="s1">'user'</span><span class="p">][</span><span class="s1">'writeapi'</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Linking_with_Parsoid">Linking with Parsoid</h3></div> <p>By default VisualEditor is automatically configured to talk to a Parsoid service running on the same host (and on the same port). <b>You should not need to change this in most cases!</b> </p><p>Some cases when you do need to change the URL of Parsoid: </p> <ul><li>Your MediaWiki server is behind a proxy (different remote and local port).</li> <li>Your MediaWiki is running inside a docker container with port mapping.</li> <li>You want to run Parsoid on a dedicated host or cluster.</li></ul> <p>If you need to do this, add the following code to your <code>LocalSettings.php</code> to specify the URL for your Parsoid instance: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVirtualRestConfig</span><span class="p">[</span><span class="s1">'modules'</span><span class="p">][</span><span class="s1">'parsoid'</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span> <span class="c1">// URL to the Parsoid instance.</span> <span class="c1">// You should change $wgServer to match the non-local host running Parsoid</span> <span class="c1">// Note! This is a server to server URL (it must be valid within your VM/container)</span> <span class="c1">// For a VM or docker this will probably be correct:</span> <span class="c1">// 'url' => "http://localhost/rest.php",</span> <span class="s1">'url'</span> <span class="o">=></span> <span class="nv">$wgServer</span> <span class="o">.</span> <span class="nv">$wgScriptPath</span> <span class="o">.</span> <span class="s1">'/rest.php'</span><span class="p">,</span> <span class="c1">// Parsoid "domain", see below (optional, rarely needed)</span> <span class="c1">// 'domain' => 'localhost',</span> <span class="p">);</span> </pre></div> <p>Note that you do not need to the initialise the <code>$wgVirtualRestConfig</code> array anywhere in LocalSettings. </p><p>Parsoid's <code>domain</code> setting here must match the host portion of <code>$wgServer</code> on the host running the Parsoid service. </p><p><b>If you set <code>$wgVirtualRestConfig['modules']['parsoid']</code> then you will also need to install Parsoid</b>, either via <code>wfLoadExtension</code> (below) or manually on a separate server or via <a href="/wiki/Special:MyLanguage/Parsoid#Linking_a_developer_checkout_of_Parsoid" title="Special:MyLanguage/Parsoid">the developer instructions on the Parsoid page</a>. </p><p><i>Note for developers:</i> as noted above, in development releases <b>including 1.36-alpha</b> Parsoid will need to be manually loaded. This will change before 1.36 is released. <b>If you are running a development release you should follow the instructions in <a href="/wiki/Special:MyLanguage/Parsoid#Development" title="Special:MyLanguage/Parsoid">Parsoid § Development</a><span style="display:none"><a href="/wiki/Parsoid" title="Parsoid"> </a></span></b>—at the very least add the following to your <code>LocalSettings.php</code>: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// For 1.36-alpha and when you changed `wgVirtualRestConfig`:</span> <span class="nx">wfLoadExtension</span><span class="p">(</span> <span class="s1">'Parsoid'</span><span class="p">,</span> <span class="s1">'vendor/wikimedia/parsoid/extension.json'</span> <span class="p">);</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Allowing_VisualEditor_on_page_titles_containing_slashes">Allowing VisualEditor on page titles containing slashes</h3></div> <p>If you are serving MediaWiki from apache2, you will need to add the following to your top level server configuration (often a <code><VirtualHost></code> section in <code>/etc/apache2/sites-enabled/000-default.conf</code> or similar): </p> <div class="mw-highlight mw-highlight-lang-apacheconf mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">AllowEncodedSlashes</span><span class="w"> </span>NoDecode </pre></div> <p>If you do not, then VisualEditor will complain that "Revision IDs returned by the server do not match" or simply "Error contacting the Parsoid/RESTBase server (HTTP 404)" when editing a page title containing a slash, for example a subpage. See <span class="phui-tag-wrapper"><style data-mw-deduplicate="TemplateStyles:r4764155">.mw-parser-output .phui-tag-wrapper,.mw-parser-output .phui-tag{color:black;font:13px"Segoe UI","Segoe UI Web Regular","Segoe UI Symbol","Lato","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.51em;font-weight:bold}.mw-parser-output .phui-tag-wrapper .phui-tag-core,.mw-parser-output .phui-tag{background-color:#EBECEE;border:1px solid #C7CCD9;border-radius:3px;padding:0 4px}.mw-parser-output .phui-tag-wrapper>a:hover .phui-tag-core,.mw-parser-output .phui-tag:hover{border-color:#A1A6B0}.mw-parser-output .phui-tag>a.external{background:none!important;padding:0!important}.mw-parser-output .phui-tag-wrapper>a,.mw-parser-output .phui-tag-wrapper>a:visited,.mw-parser-output .phui-tag>a,.mw-parser-output .phui-tag>a:visited{color:black}</style><a href="https://phabricator.wikimedia.org/T268953" class="extiw" title="phab:T268953"><span class="phui-tag-core">T268953</span></a></span> and the <a rel="nofollow" class="external text" href="https://httpd.apache.org/docs/2.4/mod/core.html#allowencodedslashes">apache documentation</a> for more information. </p><p>If the Apache server happens to be behind a Nginx proxy then its <code>proxy_pass</code> stanza should make use of the <code>$request_uri</code> parameter (cf. <a rel="nofollow" class="external text" href="https://stackoverflow.com/a/20514632">discussion</a> on StackOverflow). </p> <div class="mw-heading mw-heading3"><h3 id="Enabling_VisualEditor">Enabling VisualEditor</h3></div> <p>The following optional configurations can be used: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Optional: Set VisualEditor as the default editor for anonymous users</span> <span class="c1">// otherwise they will have to switch to VE</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-editor'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"visualeditor"</span><span class="p">;</span> <span class="c1">// Optional: Don't allow users to disable it</span> <span class="nv">$wgHiddenPrefs</span><span class="p">[]</span> <span class="o">=</span> <span class="s1">'visualeditor-enable'</span><span class="p">;</span> <span class="c1">// Optional: Enable VisualEditor's experimental code features</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-enable-experimental'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// Activate ONLY the 2017 wikitext editor by default</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-autodisable'</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-newwikitext'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> </pre></div> <p>Other extensions which load plugins for VE can be loaded before or after VE; the plugins should work either way. </p> <div class="mw-heading mw-heading3"><h3 id="Changing_active_namespaces">Changing active namespaces</h3></div> <p>By default, VisualEditor is only enabled for the namespaces "Main", "User", "File" and "Category". It is however possible to add or remove namespace using the English language canonical names defined for the respective namespaces such as e.g. "Project", "Talk" etc. Additional custom namespaces use the names used to create them. </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Enable for the meta namespace, disable for the "File" namespace and enable for the "Extra", the latter being a custom namespace</span> <span class="nv">$wgVisualEditorAvailableNamespaces</span> <span class="o">=</span> <span class="p">[</span> <span class="s1">'Project'</span> <span class="o">=></span> <span class="k">true</span><span class="p">,</span> <span class="s1">'File'</span> <span class="o">=></span> <span class="k">false</span><span class="p">,</span> <span class="s1">'Extra'</span> <span class="o">=></span> <span class="k">true</span> <span class="p">];</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Switching_between_wikitext_and_visual_editing">Switching between wikitext and visual editing</h3></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">Since MediaWiki 1.40, VisualEditor provides lossless switching between wikitext and visual editing without RESTBase.</div> <style data-mw-deduplicate="TemplateStyles:r4199130">.mw-parser-output .mw-version{border:1px solid #72777d;font-size:80%;line-height:1.2;border-collapse:collapse}.mw-parser-output .mw-version-ltr{float:right;margin:0 0 .5em .5em;text-align:right}.mw-parser-output .mw-version-rtl{float:left;margin:0 .5em .5em 0;text-align:left}.mw-parser-output .mw-version td{padding:.1em .3em}.mw-parser-output .mw-version-versionbox{border:5px solid #00af89;text-align:center}.mw-parser-output .mw-version-versionnumber{font-weight:bold;font-size:180%}.mw-parser-output .mw-version-version .mw-version-versionbox{border-color:#c8ccd1}.mw-parser-output .mw-version.mw-version-version2 .mw-version-versionbox{border-top-color:#c8ccd1;border-right-color:#c8ccd1;border-left-color:#c8ccd1}.mw-parser-output .mw-version-version-unsupported .mw-version-versionbox{border-color:#d33}.mw-parser-output .mw-version.mw-version-version2-unsupported .mw-version-versionbox{border-top-color:#d33;border-right-color:#d33;border-left-color:#d33}.mw-parser-output .mw-version-version-legacy .mw-version-versionbox{border-color:#f93}.mw-parser-output .mw-version.mw-version-version2-legacy .mw-version-versionbox{border-top-color:#f93;border-right-color:#f93;border-left-color:#f93}.mw-parser-output .mw-version-version-stable .mw-version-versionbox,.mw-parser-output .mw-version.mw-version.mw-version-and-later .mw-version-versionbox{border-color:#00af89}.mw-parser-output .mw-version.mw-version-version2-stable .mw-version-versionbox{border-top-color:#00af89;border-right-color:#00af89;border-left-color:#00af89}.mw-parser-output .mw-version-version-future .mw-version-versionbox{border-color:#8080c0}.mw-parser-output .mw-version.mw-version-version2-future .mw-version-versionbox{border-top-color:#8080c0;border-right-color:#8080c0;border-left-color:#8080c0}.mw-parser-output .mw-version-version-alpha .mw-version-versionbox{border-style:dotted}</style> <table class="mw-version mw-version-ltr mw-version-version mw-version-version-legacy"><tbody><tr> <td>MediaWiki version:</td> <td class="mw-version-versionbox" title="MediaWiki 1.39 is a legacy version"><div class="mw-version-versionnumber"><small>≤</small> 1.39</div></td> </tr></tbody></table> <table class="warning-message" style="background-color: var( --background-color-error-subtle, #ffe9e5 ); color: var( --color-base, #202122 ); border: 1px var( --border-color-error, #9f3526 ) solid; box-sizing: border-box; margin: 0.5em 0; padding: 0.5em;"><tbody><tr><td style="white-space: nowrap; vertical-align: top;"><span style="position: relative; top: -2px;"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/18px-OOjs_UI_icon_notice-destructive.svg.png" decoding="async" width="18" height="18" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/27px-OOjs_UI_icon_notice-destructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/36px-OOjs_UI_icon_notice-destructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></span> <b>Warning:</b> </td><td style="padding-left: 0.5em vertical-align: top;">Do not install RESTBase on a private wiki! RESTBase currently cannot be configured to keep page content private but will make the content of all pages publicly accessible. More details: <span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T88016" class="extiw" title="phab:T88016"><span class="phui-tag-core">T88016</span></a></span></td></tr></tbody></table> <p>VisualEditor allows you to switch back and forth between wikitext and visual editing. </p><p>However, without a <a href="/wiki/Special:MyLanguage/RESTBase" title="Special:MyLanguage/RESTBase">RESTBase</a><span style="display:none"><a href="/wiki/RESTBase" title="RESTBase"> </a></span> server, switching from wikitext to visual editing may result in <i>dirty diffs</i> when saving (non-semantic whitespace changes to wikitext formatting). If you want the ability to switch between wikitext editing and VisualEditor and save your changes without dirty diffs, you must install a RESTBase server. </p><p>If you can't set up RESTBase and dirty diffs are undesirable on your wiki (e.g. your users carefully review all changes), you can disable this feature using <code>$wgVisualEditorAllowLossySwitching=false</code>. </p><p>When switching isn't possible and you try to switch from a wikitext editing environment into VisualEditor, your only options are <i>Cancel</i> or <i>Discard my changes and switch</i>; any changes you made will be discarded if you switch.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="RESTBase_setup_for_switching">RESTBase setup for switching</h4></div> <p>To set up your own RESTBase service, follow the <a href="/wiki/Special:MyLanguage/RESTBase/Installation" title="Special:MyLanguage/RESTBase/Installation">RESTBase installation instructions</a><span style="display:none"><a href="/wiki/RESTBase/Installation" title="RESTBase/Installation"> </a></span>, paying special attention to the Parsoid configuration. </p><p>Once the RESTBase server is operational, add the following code to your <code>LocalSettings.php</code>: </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorParsoidAutoConfig</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span> <span class="nv">$wgVirtualRestConfig</span><span class="p">[</span><span class="s1">'modules'</span><span class="p">][</span><span class="s1">'restbase'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> <span class="s1">'url'</span> <span class="o">=></span> <span class="s2">"http://yourRESTBaseserver.com:7231"</span><span class="p">,</span> <span class="s1">'domain'</span> <span class="o">=></span> <span class="s1">'{domain}'</span><span class="p">,</span> <span class="s1">'parsoidCompat'</span> <span class="o">=></span> <span class="k">false</span> <span class="p">];</span> <span class="nv">$wgVisualEditorFullRestbaseURL</span> <span class="o">=</span> <span class="s1">'http://yourRESTBaseserver.com:7231/{domain}/'</span><span class="p">;</span> </pre></div> <p>where <code>{domain}</code> is the value of the host portion of <code>$wgServer</code> on the host running Parsoid. Make sure that the port you specify here (e.g. <code>:7231</code>) is the same port as you specified in the RESTBase configuration. Be careful to include the trailing slash on <code>$wgVisualEditorFullRestbaseURL</code>! </p><p>If you can't access RESTBase port (e.g.<code>:7231</code>), you can work around the problem using an httpd proxy; refer to "<a href="/wiki/Special:MyLanguage/RESTBase/Installation#If_Restbase_Port_is_blocked" title="Special:MyLanguage/RESTBase/Installation">if RESTBase port is blocked</a><span style="display:none"><a href="/wiki/RESTBase/Installation#If_Restbase_Port_is_blocked" title="RESTBase/Installation"> </a></span>". If your wiki is served through HTTPS, RESTBase must also be served through HTTPS; else users could experience "mixed-content" errors and the switch from wikitext to VisualEditor would not work. </p><p>Now when you make changes in a wikitext editor, you can switch to VisualEditor without causing dirty diffs. </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">In case you are serving your wiki over https, a standard procedure nowadays, you must serve RESTbase via https <b><a href="/wiki/Special:MyLanguage/Extension:VisualEditor#Parsoid_over_HTTPS" title="Special:MyLanguage/Extension:VisualEditor">similarily to Parsoid</a></b><span style="display:none"><a class="mw-selflink-fragment" href="#Parsoid_over_HTTPS"> </a></span> too to avoid <a href="/wiki/Topic:Tzq4rg7ixacs2jdr" title="Topic:Tzq4rg7ixacs2jdr">mixed content errors</a>. A concise and easy to understand <a href="/wiki/Topic:Tm2qsg4ywsykmahr" title="Topic:Tm2qsg4ywsykmahr">discussion of issue is available</a>. Do not forget to mix in the following <a href="/wiki/Special:MyLanguage/RESTBase/Installation#RESTBase_Server" title="Special:MyLanguage/RESTBase/Installation">documentation</a><span style="display:none"><a href="/wiki/RESTBase/Installation#RESTBase_Server" title="RESTBase/Installation"> </a></span>. Remember also to not forget to adapt your port numbers when using stunnel.</div> <div class="mw-heading mw-heading3"><h3 id="Servers_with_multiple_virtual_sites">Servers with multiple virtual sites</h3></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">Parsoid is served in production using <a href="/wiki/Special:MyLanguage/Extension:MediaWikiFarm" title="Special:MyLanguage/Extension:MediaWikiFarm">Extension:MediaWikiFarm</a><span style="display:none"><a href="/wiki/Extension:MediaWikiFarm" title="Extension:MediaWikiFarm"> </a></span>. Running Parsoid on multiple virtual sites using other mechanisms is untested; the instructions below have not been tested.</div> <p>If Apache2 is configured with multiple virtual sites, Parsoid is (in standard configuration) only able to access the default site. To check for this problem, run <code>curl '[http://your-wiki-base-url]/rest.php/v1/page/Main_Page'</code> on the server, or run <code>curl '[https://your-wiki-base-url]/rest.php/v1/page/Main_Page'</code> ensuring the URL matches the SSL certificate used on the server. </p><p>If the response contains the main page of your wiki then you don't have the problem, but if it doesn't, you may need to configure a host alias that Parsoid can use: </p><p>Look at the apache2 configuration file for the virtual server hosting the wiki, near the top of the file there should be a line like: </p> <blockquote><p><code><VirtualHost *:80></code></p></blockquote> <p>If the '*' is present, then the alias can be to localhost, if there is an IP address replacing the '*' then the alias must be to that IP address. </p><p> In the same file add a line: </p><blockquote><p><code>ServerAlias my_wiki_alias</code></p></blockquote> <p>In the hosts file of the server (/etc/hosts on Ubuntu), add a route for my_wiki_alias, either for 127.0.0.1 (if the apache2 virtual server configuration had the '*' above, else to the IP address from the apache2 virtual server configuration. </p><p>Now set the hostname in <code>$wgServer</code> to <code>protocol://my_wiki_alias</code> on the host running VisualEditor (see <a href="/wiki/Manual:$wgServer" title="Manual:$wgServer">Manual:$wgServer</a>). </p> <div class="mw-heading mw-heading3"><h3 id="Linking_with_Parsoid_in_private_wikis">Linking with Parsoid in private wikis</h3></div> <p>In a private wiki, you should do this: </p> <dl><dt>Forwarding cookies to Parsoid</dt></dl> <table class="warning-message" style="background-color: var( --background-color-error-subtle, #ffe9e5 ); color: var( --color-base, #202122 ); border: 1px var( --border-color-error, #9f3526 ) solid; box-sizing: border-box; margin: 0.5em 0; padding: 0.5em;"><tbody><tr><td style="white-space: nowrap; vertical-align: top;"><span style="position: relative; top: -2px;"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/18px-OOjs_UI_icon_notice-destructive.svg.png" decoding="async" width="18" height="18" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/27px-OOjs_UI_icon_notice-destructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/36px-OOjs_UI_icon_notice-destructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></span> <b>Warning:</b> </td><td style="padding-left: 0.5em vertical-align: top;"><i> ONLY enable this on private wikis served over HTTP and ONLY IF you understand the SECURITY IMPLICATIONS of sending Cookie headers to Parsoid over HTTP!</i></td></tr></tbody></table> <p>This is the default configuration for VisualEditor if <a href="https://gerrit.wikimedia.org/r/q/I0b958e8b75c04e4a27f50f91276be221a5b1404d" class="extiw" title="gerrit:q/I0b958e8b75c04e4a27f50f91276be221a5b1404d">not everyone is allowed to read every page</a>, as such <b>the below should not be required in most cases</b>. </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Forward users' Cookie: headers to Parsoid. Required for private wikis (login required to read).</span> <span class="c1">// If the wiki is not private (i.e. $wgGroupPermissions['*']['read'] is true) this configuration</span> <span class="c1">// variable will be ignored.</span> <span class="c1">//</span> <span class="c1">// WARNING: ONLY enable this on private wikis and ONLY IF you understand the SECURITY IMPLICATIONS</span> <span class="c1">// of sending Cookie headers to Parsoid over HTTP.</span> <span class="nv">$wgVirtualRestConfig</span><span class="p">[</span><span class="s1">'modules'</span><span class="p">][</span><span class="s1">'parsoid'</span><span class="p">][</span><span class="s1">'forwardCookies'</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> <p>If you do set any property in <code>$wgVirtualRestConfig['modules']['parsoid']</code> <b>you will have to <a href="/wiki/Special:MyLanguage/Parsoid#Linking_a_developer_checkout_of_Parsoid" title="Special:MyLanguage/Parsoid">manually install Parsoid</a><span style="display:none"><a href="/wiki/Parsoid#Linking_a_developer_checkout_of_Parsoid" title="Parsoid"> </a></span> or VisualEditor will not work!</b> </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651107"><div role="note" class="note note-info">For Parsoid/PHP, MediaWiki 1.35.x to 1.38.x using Apache you should try this <a href="/wiki/Topic:Vvu2fvadigl0mleu" title="Topic:Vvu2fvadigl0mleu">virtual host configuration</a>. Starting with MW 1.39+ it should work out of the box with no extra Apache configuration. </div> <div class="mw-heading mw-heading2"><h2 id="Quick_configuration_guide">Quick configuration guide</h2></div> <div class="noresize"> <table class="wikitable"> <tbody><tr> <th>Feature </th> <th>Beta Features opt-in state </th> <th>Enabled for all to opt-in </th> <th>Enabled for all to opt-out </th> <th>Enabled for all without opt-out </th></tr> <tr> <th>Visual mode </th> <td>1.36+:<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableBetaFeature</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div><1.36: <i>Beta Feature shown by default; disable using:</i><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgHiddenPrefs</span><span class="p">[]</span> <span class="o">=</span> <span class="s1">'visualeditor-enable'</span><span class="p">;</span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-autodisable'</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> </td> <td><i>Enabled by default</i> </td> <td><i>As in "Enabled for all to opt-out" plus:</i><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgHiddenPrefs</span><span class="p">[]</span> <span class="o">=</span> <span class="s1">'visualeditor-enable'</span><span class="p">;</span> </pre></div> </td></tr> <tr> <th>Wikitext mode </th> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableWikitextBetaFeature</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableWikitext</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableWikitext</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-newwikitext'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> </pre></div> </td> <td><i>As in "Enabled for all to opt-out" plus:</i><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgHiddenPrefs</span><span class="p">[]</span> <span class="o">=</span> <span class="s1">'visualeditor-newwikitext'</span><span class="p">;</span> </pre></div> </td></tr> <tr> <th>Single edit tab </th> <td><i>Not a supported configuration.</i> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorUseSingleEditTab</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> <span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-tabs'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'multi-tab'</span><span class="p">;</span> </pre></div> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorUseSingleEditTab</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div>Default edit tab behaviour will be to remember the last editor, and open with the wikitext editor for first edit; if you want it to be the visual editor, also add:<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgDefaultUserOptions</span><span class="p">[</span><span class="s1">'visualeditor-editor'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'visualeditor'</span><span class="p">;</span> </pre></div> </td> <td><i>As in "Enabled for all to opt-out" plus:</i><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgHiddenPrefs</span><span class="p">[]</span> <span class="o">=</span> <span class="s1">'visualeditor-tabs'</span><span class="p">;</span> </pre></div> </td></tr> <tr> <th>Visual diffs on history pages </th> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableDiffPageBetaFeature</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> </td> <td><i>Not a supported configuration.</i> </td> <td><i>Not a supported configuration.</i> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgVisualEditorEnableDiffPage</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span> </pre></div> </td></tr></tbody></table> </div> <div class="mw-heading mw-heading2"><h2 id="Complete_list_of_configuration_options">Complete list of configuration options</h2></div> <p>Each configuration option is shown without the <code>$wgVisualEditor</code> prefix for brevity; replace the '…' when using. </p> <div class="noresize"> <table class="wikitable"> <tbody><tr> <th>Option </th> <th>Default value </th> <th>Useful for… </th> <th>Documentation </th></tr> <tr> <td><code>…PluginModules</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[]</span> </pre></div> </td> <td>Extension developers </td> <td>Array of ResourceLoader module names (strings) that should be loaded when VisualEditor is loaded. Other extensions that extend VisualEditor should add to this array.<table class="warning-message" style="background-color: var( --background-color-error-subtle, #ffe9e5 ); color: var( --color-base, #202122 ); border: 1px var( --border-color-error, #9f3526 ) solid; box-sizing: border-box; margin: 0.5em 0; padding: 0.5em;"><tbody><tr><td style="white-space: nowrap; vertical-align: top;"><span style="position: relative; top: -2px;"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/18px-OOjs_UI_icon_notice-destructive.svg.png" decoding="async" width="18" height="18" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/27px-OOjs_UI_icon_notice-destructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/36px-OOjs_UI_icon_notice-destructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></span> <b>Warning:</b> </td><td style="padding-left: 0.5em vertical-align: top;">When removing a module on a production site (<i>e.g.</i> Wikimedia), first remove it from this array, wait for the change to propagate, and only then remove the module code and module registration. Otherwise there may be a period of time during which VisualEditor depends on a module that no longer exists.</td></tr></tbody></table> </td></tr> <tr> <td><code>…PreloadModules</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[</span> <span class="w"> </span><span class="s2">"site"</span><span class="p">,</span> <span class="w"> </span><span class="s2">"user"</span> <span class="p">]</span> </pre></div> </td> <td>Extension developers </td> <td>Array of ResourceLoader module names (strings) that should be loaded before VisualEditor is loaded. Other extensions that extend VisualEditor and need to set up their environment before loading should add to this array.<table class="warning-message" style="background-color: var( --background-color-error-subtle, #ffe9e5 ); color: var( --color-base, #202122 ); border: 1px var( --border-color-error, #9f3526 ) solid; box-sizing: border-box; margin: 0.5em 0; padding: 0.5em;"><tbody><tr><td style="white-space: nowrap; vertical-align: top;"><span style="position: relative; top: -2px;"><span typeof="mw:File"><span><img alt="Warning" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/18px-OOjs_UI_icon_notice-destructive.svg.png" decoding="async" width="18" height="18" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/27px-OOjs_UI_icon_notice-destructive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bf/OOjs_UI_icon_notice-destructive.svg/36px-OOjs_UI_icon_notice-destructive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></span> <b>Warning:</b> </td><td style="padding-left: 0.5em vertical-align: top;">When removing a module on a production site (<i>e.g.</i> Wikimedia), first remove it from this array, wait for the change to propagate, and only then remove the module code and module registration. Otherwise there may be a period of time during which VisualEditor depends on a module that no longer exists.</td></tr></tbody></table> </td></tr> <tr> <td><code>…PreferenceModules</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"visualeditor-enable-experimental"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ext.visualEditor.experimental"</span> <span class="p">}</span> </pre></div> </td> <td>Extension developers </td> <td>Associative array of ResourceLoader module names (strings) that should be loaded when VisualEditor is loaded <b>if</b> the current user has a preference set. Other extensions that extend VisualEditor should add to this array if they want their addition to be opt-in or opt-out. Keys are preference names, values are ResourceLoader module names. <p>Remember to also set defaults in <code>$wgDefaultUserOptions</code>! </p> </td></tr> <tr> <td><code>…ParsoidAutoConfig</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">true</span> </pre></div> </td> <td>Sysadmins </td> <td>Enables auto-configuration of the bundled version of the Parsoid REST API. Set to <code>false</code> if you have an unusual Parsoid configuration and want to manually configure it. </td></tr> <tr> <td><code>…RestbaseURL</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>URL to use to access the main RESTBase call. The page name will be appended directly to this value, so this needs to be set to something like '<code><a class="external free" href="https://en.wikipedia.org/api/rest_v1/page/html/">https://en.wikipedia.org/api/rest_v1/page/html/</a></code>' <u>including</u> the trailing slash. <p>If this is set, the page HTML will be requested from RESTBase. If this is not set, the page HTML will be requested from the API, which will send an HTTP request to Parsoid or to RESTBase if available. </p> </td></tr> <tr> <td><code>…FullRestbaseURL</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>URL to use to access the rest of RESTBase. The page name will be appended directly to this value, so this needs to be set to something like '<code><a class="external free" href="https://en.wikipedia.org/api/rest_">https://en.wikipedia.org/api/rest_</a></code>' <u>excluding</u> the trailing slash. </td></tr> <tr> <td><code>…AllowLossySwitching</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">true</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to allow switching from wikitext to visual editor even if doing so may cause dirty diffs. See <a href="#Switching_between_Wikitext_Editing_and_VisualEditor">§ Switching between Wikitext Editing and VisualEditor</a>. </td></tr> <tr> <td><code>…SerializationCacheTimeout</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="mi">3600</span> </pre></div> </td> <td>Sysadmins </td> <td>Serialization cache timeout, in seconds </td></tr> <tr> <td><code>…AvailableNamespaces</code> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[</span> <span class="s2">"User"</span> <span class="o">=></span> <span class="k">true</span><span class="p">,</span> <span class="s2">"File"</span> <span class="o">=></span> <span class="k">true</span><span class="p">,</span> <span class="s2">"Category"</span> <span class="o">=></span> <span class="k">true</span><span class="p">,</span> <span class="s2">"_merge_strategy"</span> <span class="o">=></span> <span class="s2">"array_plus"</span> <span class="p">]</span> </pre></div> </td> <td>Sysadmins </td> <td>Namespaces in which to enable VisualEditor (mapped from namespace canonical name to a boolean flag), on top of <code>$wgContentNamespaces</code>. </td></tr> <tr> <td><code>…AvailableContentModels</code> </td> <td><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[</span> <span class="s2">"wikitext"</span> <span class="o">=></span> <span class="s2">"article"</span><span class="p">,</span> <span class="s2">"_merge_strategy"</span> <span class="o">=></span> <span class="s2">"array_plus"</span> <span class="p">]</span> </pre></div> </td> <td>Extension developers </td> <td>Content models in which to enable VisualEditor (mapped from content model name to a boolean flag). </td></tr> <tr> <td><code>…UseChangeTagging</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">true</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to put a <a href="/wiki/Special:MyLanguage/Manual:Tags" title="Special:MyLanguage/Manual:Tags">change tag</a><span style="display:none"><a href="/wiki/Manual:Tags" title="Manual:Tags"> </a></span> on every edit made with VisualEditor. </td></tr> <tr> <td><a href="#Integration_of_"2017_wikitext_editor""><code>…EnableWikitext</code></a> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to enable the <a href="/wiki/Special:MyLanguage/2017_wikitext_editor" title="Special:MyLanguage/2017 wikitext editor">wikitext source mode</a><span style="display:none"><a href="/wiki/2017_wikitext_editor" title="2017 wikitext editor"> </a></span> inside VisualEditor. </td></tr> <tr> <td><code>…EnableDiffPage</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to enable the <a href="/wiki/Special:MyLanguage/VisualEditor/Diffs" title="Special:MyLanguage/VisualEditor/Diffs">visual diff</a><span style="display:none"><a href="/wiki/VisualEditor/Diffs" title="VisualEditor/Diffs"> </a></span> function on the history special page. </td></tr> <tr> <td><code>…EnableDiffPageBetaFeature</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to allow users to enable the <a href="/wiki/Special:MyLanguage/VisualEditor/Diffs" title="Special:MyLanguage/VisualEditor/Diffs">visual diff</a><span style="display:none"><a href="/wiki/VisualEditor/Diffs" title="VisualEditor/Diffs"> </a></span> function on the history special page as a beta feature. </td></tr> <tr> <td><code>…EnableVisualSectionEditing</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="err">mobile</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to allow users to enable the section editing. </td></tr> <tr> <td><code>…UseSingleEditTab</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to use only one edit tab, switching back and forth, or add a dedicated VisualEditor edit tab next to the existing one. </td></tr> <tr> <td><code>…SingleEditTabSwitchTime</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="mi">20160101000000</span> </pre></div> </td> <td>Sysadmins </td> <td>From what timestamp to warn existing editors that the installation has switched from two edit tabs to one. In general you should ignore this. </td></tr> <tr> <td><code>…TabPosition</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="err">'be</span><span class="kc">f</span><span class="err">ore'</span> </pre></div> </td> <td>Sysadmins </td> <td>If showing two edit tabs, where to put the VisualEditor edit tab in relation to the system (or WikiEditor) one: <ul><li>'before': put it right before the old edit tab</li> <li>'after': put it right after the old edit tab</li></ul> </td></tr> <tr> <td><code>…TabMessages</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span> <span class="w"> </span><span class="nt">"edit"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span> <span class="w"> </span><span class="nt">"editsource"</span><span class="p">:</span><span class="w"> </span><span class="s2">"visualeditor-ca-editsource"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"create"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span> <span class="w"> </span><span class="nt">"createsource"</span><span class="p">:</span><span class="w"> </span><span class="s2">"visualeditor-ca-createsource"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"editlocaldescriptionsource"</span><span class="p">:</span><span class="w"> </span><span class="s2">"visualeditor-ca-editlocaldescriptionsource"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"createlocaldescriptionsource"</span><span class="p">:</span><span class="w"> </span><span class="s2">"visualeditor-ca-createlocaldescriptionsource"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"editsection"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span> <span class="w"> </span><span class="nt">"editsectionsource"</span><span class="p">:</span><span class="w"> </span><span class="s2">"visualeditor-ca-editsource-section"</span> <span class="p">}</span> </pre></div> </td> <td>Sysadmins </td> <td>Configuration of what messages to use for the various kinds of edit tab users can see, if showing two edit tabs: <p>'<b>edit</b>' – i18n message key to use for the VisualEditor edit tab; if <code>null</code>, the default edit tab caption will be used; the '<code>visualeditor-ca-ve-edit</code>' message is available for this. </p><p>'<b>editsource</b>' – i18n message key to use for the old edit tab; if <code>null</code>, the tab's caption will not be changed </p><p>'<b>create</b>' – i18n message key to use for the VisualEditor create tab; if <code>null</code>, the default create tab caption will be used; the '<code>visualeditor-ca-ve-create</code>' message is available for this </p><p>'<b>createsource</b>' – i18n message key to use for the old create tab; if <code>null</code>, the tab's caption will not be changed </p><p>'<b>editlocaldescriptionsource</b>' – i18n message key to use for the old edit tab on pages for files in foreign repos; if <code>null</code>, tab's caption will not be changed </p><p>'<b>createlocaldescriptionsource</b>' – i18n message key to use for the old create tab on pages for files in foreign repos; if <code>null</code>, tab's caption will not be changed </p><p>'<b>editsection</b>' – i18n message key to use for the VisualEditor section edit link; if <code>null</code>, the default edit section link caption will be used </p><p>'<b>editsectionsource</b>' – i18n message key to use for the source section edit link; if <code>null</code>, the link's caption will not be changed </p> </td></tr> <tr> <td><code>…AutoAccountEnable</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to enable VisualEditor for every new account. <p>This allows you to keep the '<code>visualeditor-enable</code>' preference disabled by default, but still have VisualEditor available for new logged-in users (by setting this to <code>true</code>). </p> </td></tr> <tr> <td><code>…DisableForAnons</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to disable VisualEditor for non-logged-in users <p>This allows you to enable the '<code>visualeditor-enable</code>' preference by default, but still disable VisualEditor for logged-out users (by setting this to <code>true</code>). </p> </td></tr> <tr> <td><code>…TransitionDefault</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>For wikis planning to use the '<code>visualeditor-betatempdisable</code>' preference to auto-opt-out existing users whilst enabling by default for all existing users, whether to start recording explicit opt-outs against implicit ones. </td></tr> <tr> <td><code>…ShowBetaWelcome</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">true</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to show the "welcome to the beta" dialog the first time a user uses VisualEditor </td></tr> <tr> <td><code>…NewAccountEnableProportion</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins running user analytics </td> <td>Whether to enable VisualEditor for a proportion (Egyptian fraction) of all new accounts based on userID. </td></tr> <tr> <td><code>…FeedbackTitle</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>Whether to enable the MediaWiki feedback tool inside the help menu of VisualEditor. If enabled, the title of the page at which to point the MediaWiki feedback tool. </td></tr> <tr> <td><code>…FeedbackAPIURL</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>Sysadmins </td> <td>If set, the API of the remote wiki at which to point the MediaWiki feedback tool. </td></tr> <tr> <td><code>…SkinToolbarScrollOffset</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">[]</span> </pre></div> </td> <td>Skin developers </td> <td>An array of skin names mapped to pixel values to which to set the toolbar scroll offsets. </td></tr> <tr> <td><code>…BrowserUnsupportedList</code> </td> <td>VisualEditor developers </td> <td>List of browsers with which VisualEditor is incompatible. See <code>jquery.Client</code> for specification. If the user's browser is matched, VisualEditor will refuse to load. <p><b>Firefox</b> – There is a wikilink corruption (<code>[[./]]</code>) bug in Firefox 14 and below (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T52720" class="extiw" title="phab:T52720"><span class="phui-tag-core">T52720</span></a></span>) which prevent wider availability. </p><p><b>Safari</b> – Older versions of Safari suffered from corruption issues from various old browser plugins. </p><p><b>Opera</b> – Below version 12, Opera was untested, and as its user base is almost non-existent anyway it's blocked. </p><p><b>Internet Explorer</b> – At or below version 9, there are various incompatibilities in layout and feature support. Versions 10 and 11 should work correctly. </p><p>Not listed independently, because it's inherited from MediaWiki itself, <b>Android</b> at 3.x and below "support" CE but don't trigger keyboard input or have other issues, making it useless for users. </p> </td></tr> <tr> <td><code>…EnableTocWidget</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>VisualEditor developers </td> <td>Whether to enable the (currently experimental) Table Of Contents widget </td></tr> <tr> <td><code>…RebaserURL</code> </td> <td><div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="kc">false</span> </pre></div> </td> <td>VisualEditor developers </td> <td>URL to use to access the experimental rebaser technology. If false, the technology isn't loaded. </td></tr></tbody></table> </div> <div class="mw-heading mw-heading3"><h3 id="Related_configuration_parameters">Related configuration parameters</h3></div> <p>See also <a href="/wiki/Special:MyLanguage/Upload_dialog#Configuration_(for_wiki_sysadmins)" title="Special:MyLanguage/Upload dialog">Upload dialog § Configuration (for wiki sysadmins)</a><span style="display:none"><a href="/wiki/Upload_dialog" title="Upload dialog"> </a></span> for information about configuring the drag-and-drop/copy&paste functionality for uploading media files through VisualEditor. </p> <div class="mw-heading mw-heading2"><h2 id="Integration_of_"2017_wikitext_editor""><span id="Integration_of_.222017_wikitext_editor.22"></span>Integration of "2017 wikitext editor"</h2></div> <p>To enable the so-called "2017 wikitext editor", follow the instructions for <b>Wikitext mode</b> in the <a href="#Quick_configuration_guide">§ Quick configuration guide</a>. </p><p>It is also possible to enable wikitext syntax highlighting for this editor; to do this, you must install the <a href="/wiki/Special:MyLanguage/Extension:CodeMirror" title="Special:MyLanguage/Extension:CodeMirror">CodeMirror</a><span style="display:none"><a href="/wiki/Extension:CodeMirror" title="Extension:CodeMirror"> </a></span> extension. </p> <div class="mw-heading mw-heading2"><h2 id="Rich_template_forms">Rich template forms</h2></div> <p><a href="/wiki/Special:MyLanguage/Extension:TemplateData" title="Special:MyLanguage/Extension:TemplateData">Extension:TemplateData</a><span style="display:none"><a href="/wiki/Extension:TemplateData" title="Extension:TemplateData"> </a></span> allows the addition of template information, making templates easier to insert with the VisualEditor </p> <div class="mw-heading mw-heading2"><h2 id="Improved_citation_tool">Improved citation tool</h2></div> <p>Citations can be improved by configuring the <a href="/wiki/Special:MyLanguage/VisualEditor/Citation_tool" title="Special:MyLanguage/VisualEditor/Citation tool">citation tool</a><span style="display:none"><a href="/wiki/VisualEditor/Citation_tool" title="VisualEditor/Citation tool"> </a></span>, and also by setting up <a href="/wiki/Special:MyLanguage/Citoid" title="Special:MyLanguage/Citoid">Citoid</a><span style="display:none"><a href="/wiki/Citoid" title="Citoid"> </a></span>. </p> <div class="mw-heading mw-heading2"><h2 id="Hooks">Hooks</h2></div> <p>As of 2023, Visual Editor sets around 10 JavaScript hooks and 3 PHP hooks that are listed at <a href="/wiki/VisualEditor/Hooks" title="VisualEditor/Hooks">VisualEditor/Hooks</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Troubleshooting">Troubleshooting</h2></div> <dl><dt>All templates appear as puzzle icons instead of displaying its contents</dt> <dd>Check <a href="/wiki/Topic:V6tbh7vonvg3mzl9" title="Topic:V6tbh7vonvg3mzl9">Topic:V6tbh7vonvg3mzl9</a></dd></dl> <dl><dt>Docker: Error contacting the Parsoid/RESTBase server (curl error: 7)</dt> <dd>Ensure that the mediawiki container name does not equal to the domain the wiki is running on. If both names are equal, the api will try to connect to the domain the wiki is running on, but only receive the local ip of the container. This will cause errors when ssl is enabled.</dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (curl error: 7) Couldn't connect to server</dt> <dd>Ensure that the mediawiki native hostname does not equal to the domain the wiki is running on. If both names are equal, the api will try to connect to the domain the wiki is running on, but will have difficulty resolving the domain.</dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server: (curl error: 60) Peer certificate cannot be authenticated with given CA certificates</dt> <dd>You may be using a self-signed SSL certificate. Workaround unknown.</dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server: http-bad-status</dt> <dd> <ul><li>When editing subpages on Apache, <code>AllowEncodedSlashes NoDecode</code> must be added in the VirtualHost section of the wiki (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T268953" class="extiw" title="phab:T268953"><span class="phui-tag-core">T268953</span></a></span>).</li> <li>On a HTTP Auth protected wiki, you must allow local access via an allow / geo block in your Apache/Nginx config</li> <li>On a private wiki, see <i>"parsoidserver-http-bad-status: 401"</i>, below</li></ul></dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 400)</dt> <dd> <ul><li>If you are using a Short URL config, check your Nginx/Apache config for <code>/rest.php/?$query_string</code> block – see respective <a href="/wiki/Manual:Short_URL#Guides" title="Manual:Short URL">Manual:Short_URL#Guides</a></li> <li>An unresolved error for some users. (<a href="/wiki/Topic:Wc5hugtg7besmcb2" title="Topic:Wc5hugtg7besmcb2">Topic:Wc5hugtg7besmcb2</a>)</li></ul></dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 403)</dt> <dd> <ul><li>Caused by the 'writeapi' right being revoked (or not granted). Check your LocalSettings.php and remove any overrides for this right. (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T265043" class="extiw" title="phab:T265043"><span class="phui-tag-core">T265043</span></a></span>)</li> <li>Or caused by ModSecurity (or possibly another WAF). Request your hosting service provider to whitelist the security rules that were being triggered by your site. A rule known to cause this is the "missing content-length" check enabled. This rule checks for 'suspicious' but protocol valid behavior. It triggers on multipart POST's and should not be enabled (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T265043#6866940" class="extiw" title="phab:T265043"><span class="phui-tag-core">T265043#6866940</span></a></span>)</li></ul></dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 404)</dt> <dd>Possible reasons for this problem: <ul><li>Caused by ModSecurity (or possibly another WAF). Request your hosting service provider to whitelist the security rules that were being triggered by your site.</li> <li>When the web server is Apache, <code>AllowEncodedSlashes NoDecode</code> must be added in the VirtualHost section of the wiki (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T261921" class="extiw" title="phab:T261921"><span class="phui-tag-core">T261921</span></a></span>).</li> <li>Possibly Parsoid is not loaded when using default configuration (local Parsoid, no RestBase). Add to LocalSettings.php: <code>wfLoadExtension( 'Parsoid', 'vendor/wikimedia/parsoid/extension.json' );</code>.</li> <li>If you are using a proxy server or a docker port mapping you will need to set your local url in <code>$wgVirtualRestConfig['modules']['parsoid']</code> (see: <a href="#Linking_with_Parsoid">#Linking with Parsoid</a>).</li> <li>Caused by VisualEditor for MW 1.35 and later due to insufficient rewrite rules in case of non-standard short URLs (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T270376" class="extiw" title="phab:T270376"><span class="phui-tag-core">T270376</span></a></span>). See <a href="/wiki/Extension:VisualEditor/webserver" class="mw-redirect" title="Extension:VisualEditor/webserver">webserver</a> for the solution.</li> <li>If using <a href="/wiki/Manual:Short_URL" title="Manual:Short URL">short URLs</a>, place "RewriteCond %{HTTP_USER_AGENT} !^(VisualEditor)" just above "RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f".</li> <li>If you have installed MediaWiki using the Debian <code>mediawiki</code> package, and if the file <code>rest.php</code> is not in your installation path, you are probably missing some new symbolic links (eventually evaluate the command <code>ln -s /var/lib/mediawiki/* .</code> from the installation path to install only the missing ones. In this case, you can ignore the errors about links you aready have)</li></ul></dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 415)</dt> <dd>If you're running a private wiki, you might be encountering bug <span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T268277" class="extiw" title="phab:T268277"><span class="phui-tag-core">T268277</span></a></span>.</dd> <dd>If you're running a secure site (SSL), but <a href="/wiki/Manual:$wgServer" title="Manual:$wgServer">$wgServer</a> is set to a protocol-relative URL (<code>//wiki.domain.com</code>), you might be encountering bug <span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T299175" class="extiw" title="phab:T299175"><span class="phui-tag-core">T299175</span></a></span>.</dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 500) when saving page with accented character in title, on Windows/IIS</dt> <dd>IIS expects URLs to be encoded using legacy single-byte encodings, but MediaWiki uses UTF-8. Follow these instructions to resolve this: <a rel="nofollow" class="external free" href="https://support.microsoft.com/en-us/help/2277918/fix-a-php-application-that-depends-on-the-request-uri-server-variable">https://support.microsoft.com/en-us/help/2277918/fix-a-php-application-that-depends-on-the-request-uri-server-variable</a> (<span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T269673" class="extiw" title="phab:T269673"><span class="phui-tag-core">T269673</span></a></span>)</dd></dl> <dl><dt>Error contacting the Parsoid/RESTBase server (HTTP 500) when trying to edit an existing page with VisualEditor</dt> <dd>Persisting in MW 1.35.x . See <span class="phui-tag-wrapper"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r4764155"><a href="https://phabricator.wikimedia.org/T270377" class="extiw" title="phab:T270377"><span class="phui-tag-core">T270377</span></a></span></dd></dl> <dl><dt>Error loading data from server: HTTP 500. Would you like to retry?</dt> <dd>Possible reasons for this problem: <ul><li>On new installs, "curl", "php5-curl", or "php7.0-curl" (or other package appropriate to your PHP version) is not installed on the server.</li> <li>setMwApi uri is set incorrectly with e.g. https instead of http.</li> <li>Bad rewrite rules in the apache configuration that would cause API failures.</li> <li>The SSL/TLS certificates are expired.</li> <li>When directory <code><a href="/wiki/Special:MyLanguage/Manual:$wgTmpDirectory" title="Special:MyLanguage/Manual:$wgTmpDirectory">$wgTmpDirectory</a><span style="display:none"><a href="/wiki/Manual:$wgTmpDirectory" title="Manual:$wgTmpDirectory"> </a></span></code> (for example "/tmp") has not write permissions.</li> <li>When running Windows Authentication with Apache, you would need to white-list 127.0.0.1 in your Apache conf, as Apache doesn't have read access. <div class="mw-highlight mw-highlight-lang-apache mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Directory</span><span class="w"> </span><span class="s">"D:/Wiki/htdocs"</span><span class="nt">></span> <span class="w"> </span>... <span class="w"> </span><span class="nb">Allow</span><span class="w"> </span>from<span class="w"> </span><span class="m">127.0.0.1</span> <span class="w"> </span><span class="nb">Satisfy</span><span class="w"> </span><span class="k">Any</span> <span class="nt"></Directory></span> </pre></div></li></ul></dd></dl> <dl><dt>No visible error (Appears to load forever)</dt> <dd>Check the parsoid log file, and consult <a href="/wiki/Special:MyLanguage/Parsoid/Troubleshooting" title="Special:MyLanguage/Parsoid/Troubleshooting">Parsoid/Troubleshooting</a><span style="display:none"><a href="/wiki/Parsoid/Troubleshooting" class="mw-redirect" title="Parsoid/Troubleshooting"> </a></span>.</dd></dl> <dl><dt>parsoidserver-http-bad-status: 401</dt> <dd>Caused by read or edit restrictions (aka 'private wiki'). If you've set up a private wiki and don't want to use cookie forwarding, you can <a href="/wiki/User:Andru~mediawikiwiki/Allow_Parsoid_Server" class="mw-redirect" title="User:Andru~mediawikiwiki/Allow Parsoid Server">explicitly remove restrictions for Parsoid by IP address</a>. (See <a href="/wiki/Topic:Vv35plp6g16qno0s" title="Topic:Vv35plp6g16qno0s">Topic:Vv35plp6g16qno0s</a> and the ticket: <a href="https://phabricator.wikimedia.org/T268277" class="extiw" title="phab:T268277">MW 1.35.0 "Error contacting the Parsoid/RESTBase server: http-bad-status" on a private wiki</a>)</dd></dl> <dl><dt>parsoidserver-http-curl-error: couldn't connect to host.</dt> <dd>Parsoid is not running, or <code>$wgVirtualRestConfig['modules']['parsoid']['url']</code> is not set correctly</dd></dl> <dl><dt>parsoidserver-http-curl-error: Failed to connect to ....: Permission denied.</dt> <dd>Can be caused by a cURL request on a <a href="https://en.wikipedia.org/wiki/Security-Enhanced_Linux" class="extiw" title="en:Security-Enhanced Linux">Security-Enhanced Linux</a> (SELinux, like CentOS) to a non standard port like 8000 in the example configuration above, see <a rel="nofollow" class="external free" href="http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied">http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied</a> and <a rel="nofollow" class="external free" href="https://www.centos.org/forums/viewtopic.php?f=47&t=53223&p=225372#p225372">https://www.centos.org/forums/viewtopic.php?f=47&t=53223&p=225372#p225372</a></dd></dl> <dl><dt>parsoidserver-http-not-acceptable: 406</dt> <dd>Caused by Parsoid 0.9 enforcing clients to return a 1.6.0 and greater HTML version string in the header. This most likely affects Debian users as they are using slightly older MediaWiki versions with MediaWiki's Parsoid APT repository. This can be fixed by either downgrading to 0.8 (not easy as 0.8 no longer exists in the repository) or by editing <code>/usr/lib/parsoid/src/lib/config/ParsoidConfig.js</code> so that <code>ParsoidConfig.prototype.strictAcceptCheck = false;</code>. The latter will be overwritten on any package upgrade, so it is up to the administrator to lock the package and keep on top of updates manually.</dd></dl> <dl><dt>parsoidserver-http-not-found: 404 (or timeout)</dt> <dd>Caused by wrong path to MediaWiki API endpoint. Set correct url to the right path to <code>api.php</code> in Parsoid's <code>localsettings.js</code> config file. If you have set up following the recommendations, your API path would be "<a rel="nofollow" class="external free" href="http://localhost/w/api.php">http://localhost/w/api.php</a>". Add this API path to "localsettings.js" like "parsoidConfig.setMwApi({uri: '<a rel="nofollow" class="external free" href="http://localhost/w/api.php">http://localhost/w/api.php</a>' });".</dd></dl> <dl><dt>Synology</dt> <dd>Make sure you click the options that engage VisualEditor. If the VE returns an error when you try to save the edited page, this likely means you did not enable zlib (an optional dependency, but required for VE) during installation. <ul><li>Go to: MainMenu (the four little boxes in the left corner of the Synology screen) and choose Web Station</li> <li>In the left sidebar choose </> Script Language Settings</li> <li>Choose MediaWiki and click Edit and then Extensions</li> <li>At the very bottom of the list, click the zlib box. You will also want to enable the optional dependencies mysql, imagick and zip.</li></ul></dd></dl> <div class="mw-heading mw-heading2"><h2 id="References">References</h2></div> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"> <a href="https://lists.wikimedia.org/pipermail/wikitech-l/2017-February/087635.html" class="extiw" title="mailarchive:wikitech-l/2017-February/087635.html">mailarchive:wikitech-l/2017-February/087635.html</a></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="Development_documentation">Development documentation</h2></div> <ul><li><a href="/wiki/VisualEditor/Gadgets" title="VisualEditor/Gadgets">VisualEditor/Gadgets</a> - non formal guide for hacking VisualEditor. Includes code snippets and other information useful to gadget authors (and other custom JS devs).</li> <li><a class="external text" href="https://doc.wikimedia.org/VisualEditor/master/js/">API Documentation</a> - information on some VisualEditor JS classes.</li></ul> <style data-mw-deduplicate="TemplateStyles:r6651108">.mw-parser-output table.ombox{margin:4px 10%;border-collapse:collapse;border:1px solid #a2a9b1;background-color:#f8f9fa;color:#333;box-sizing:border-box}.mw-parser-output .ombox td.mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox th.mbox-text,.mw-parser-output .ombox td.mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox td.mbox-image{border:none;text-align:center;padding:2px 0 2px 0.9em}.mw-parser-output .ombox td.mbox-imageright{border:none;text-align:center;padding:2px 0.9em 2px 0}.mw-parser-output table.ombox-notice{border-color:#a2a9b1}.mw-parser-output table.ombox-speedy{background-color:#fee7e6;color:#333}.mw-parser-output table.ombox-speedy,.mw-parser-output table.ombox-delete{border-color:#b32424;border-width:2px}.mw-parser-output table.ombox-content{border-color:#f28500}.mw-parser-output table.ombox-style{border-color:#fc3}.mw-parser-output table.ombox-move{border-color:#9932cc}.mw-parser-output table.ombox-protection{border-color:#a2a9b1;border-width:2px}html body.mediawiki .mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;box-sizing:border-box;width:238px;font-size:88%;line-height:1.25em}@media screen{html.skin-theme-clientpref-night .mw-parser-output table.ombox{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output table.ombox{background-color:transparent;color:inherit}}</style><table class="ombox ombox-notice plainlinks" role="presentation" style="clear: both; margin-top: 0; margin-bottom: 0;"><tbody><tr><td class="mbox-image"><span class="skin-invert-image" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/40px-Wikimedia-logo_black.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/60px-Wikimedia-logo_black.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Wikimedia-logo_black.svg/80px-Wikimedia-logo_black.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span></td><td class="mbox-text">This extension is being used on one or more <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Wikimedia_projects" class="extiw" title="m:Special:MyLanguage/Wikimedia projects">Wikimedia projects</a>. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's <a class="external text" href="https://noc.wikimedia.org/conf/highlight.php?file=CommonSettings.php">CommonSettings.php</a> and <a class="external text" href="https://noc.wikimedia.org/conf/highlight.php?file=InitialiseSettings.php">InitialiseSettings.php</a> configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's <a href="/wiki/Special:Version" title="Special:Version">Special:Version</a> page.</td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651108"><table class="ombox ombox-notice" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/40px-OOjs_UI_icon_information-progressive.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/60px-OOjs_UI_icon_information-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/80px-OOjs_UI_icon_information-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></td><td class="mbox-text">This extension is included in the following wiki farms/hosts and/or packages: <style data-mw-deduplicate="TemplateStyles:r6387430">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li,.mw-parser-output .hlist .mw-empty-elt{display:none}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)"\a0 "}</style><div class="hlist"> <ul><li><a href="/wiki/Special:MyLanguage/BlueSpice" title="Special:MyLanguage/BlueSpice">BlueSpice</a><span style="display:none"><a href="/wiki/BlueSpice" title="BlueSpice"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Canasta" title="Special:MyLanguage/Canasta">Canasta</a><span style="display:none"><a href="/wiki/Canasta" title="Canasta"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Debian_packages" title="Special:MyLanguage/Debian packages">Debian</a><span style="display:none"><a href="/wiki/Debian_packages" title="Debian packages"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Fandom" title="Special:MyLanguage/Fandom">Fandom</a><span style="display:none"><a href="/wiki/Fandom" title="Fandom"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Miraheze" title="Special:MyLanguage/Miraheze">Miraheze</a><span style="display:none"><a href="/wiki/Miraheze" title="Miraheze"> </a></span></li> <li><a rel="nofollow" class="external text" href="https://www.mywikis.com/">MyWikis</a></li> <li><a rel="nofollow" class="external text" href="https://open-csp.org/">Open CSP</a></li> <li><a rel="nofollow" class="external text" href="https://www.pro.wiki/">ProWiki</a></li> <li><a rel="nofollow" class="external text" href="https://semantic.wiki/de/core">semantic::core</a></li> <li><a href="/wiki/Special:MyLanguage/ShoutWiki" title="Special:MyLanguage/ShoutWiki">ShoutWiki</a><span style="display:none"><a href="/wiki/ShoutWiki" title="ShoutWiki"> </a></span></li> <li><a rel="nofollow" class="external text" href="https://telepedia.net/">Telepedia</a></li> <li><a href="/wiki/Special:MyLanguage/wiki.gg" title="Special:MyLanguage/wiki.gg">wiki.gg</a><span style="display:none"><a href="/wiki/Wiki.gg" title="Wiki.gg"> </a></span></li> <li><a rel="nofollow" class="external text" href="https://wikiforge.net/">WikiForge</a></li></ul> </div> <small>This is not an authoritative list.</small> <small>Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here.</small> <small>Always check with your wiki farms/hosts or bundle to confirm.</small></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651108"><table class="ombox ombox-notice plainlinks" role="presentation"><tbody><tr><td class="mbox-image"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/40px-OOjs_UI_icon_information-progressive.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/60px-OOjs_UI_icon_information-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ec/OOjs_UI_icon_information-progressive.svg/80px-OOjs_UI_icon_information-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></span></span></td><td class="mbox-text">VisualEditor is maintained by <b><a href="/wiki/Special:MyLanguage/Editing" title="Special:MyLanguage/Editing">Editing</a><span style="display:none"><a href="/wiki/Editing" class="mw-redirect" title="Editing"> </a></span> team</b>. <p>Get help: </p> <ul><li><span typeof="mw:File"><a href="/wiki/File:OOjs_UI_icon_speechBubbles-ltr-progressive.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/9/99/OOjs_UI_icon_speechBubbles-ltr-progressive.svg/16px-OOjs_UI_icon_speechBubbles-ltr-progressive.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/99/OOjs_UI_icon_speechBubbles-ltr-progressive.svg/24px-OOjs_UI_icon_speechBubbles-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/99/OOjs_UI_icon_speechBubbles-ltr-progressive.svg/32px-OOjs_UI_icon_speechBubbles-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span> <style data-mw-deduplicate="TemplateStyles:r6651115">.mw-parser-output .irc-connect>a{color:green}@media screen{html.skin-theme-clientpref-night .mw-parser-output .irc-connect>a{color:#12c812}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .irc-connect>a{color:#12c812}}</style><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#mediawiki-visualeditor on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/mediawiki-visualeditor">#mediawiki-visualeditor</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#mediawiki-visualeditor">connect</a></sup> ← Live chat (<a href="/wiki/Special:MyLanguage/MediaWiki_on_IRC" title="Special:MyLanguage/MediaWiki on IRC">IRC</a>)</li> <li><a href="/wiki/Extension_talk:VisualEditor" title="Extension talk:VisualEditor">Extension talk:VisualEditor</a> ← <a href="/wiki/Special:MyLanguage/Help:Talk_pages" title="Special:MyLanguage/Help:Talk pages">Talk page</a><span style="display:none"><a href="/wiki/Help:Talk_pages" title="Help:Talk pages"> </a></span></li> <li><span typeof="mw:File"><a href="/wiki/File:Favicon-Phabricator-WM.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Favicon-Phabricator-WM.svg/16px-Favicon-Phabricator-WM.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Favicon-Phabricator-WM.svg/24px-Favicon-Phabricator-WM.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Favicon-Phabricator-WM.svg/32px-Favicon-Phabricator-WM.svg.png 2x" data-file-width="592" data-file-height="592" /></a></span> <a href="https://phabricator.wikimedia.org/tag/visualeditor" class="extiw" title="phab:tag/visualeditor">visualeditor</a> (<span class="plainlinks"><a class="external text" href="https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?tags=visualeditor">add task</a></span>) ← <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span> project page</li></ul></td></tr></tbody></table> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐7fc47fc68d‐q9knr Cached time: 20241128162322 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 1.355 seconds Real time usage: 1.699 seconds Preprocessor visited node count: 9207/1000000 Post‐expand include size: 143187/2097152 bytes Template argument size: 35427/2097152 bytes Highest expansion depth: 20/100 Expensive parser function count: 111/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 56592/5000000 bytes Lua time usage: 0.641/10.000 seconds Lua memory usage: 19392983/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 1413.749 1 -total 46.69% 660.082 1 Template:Extension 34.57% 488.702 102 Template:Ll 22.27% 314.855 134 Template:Pagelang 20.99% 296.730 207 Template:Translatable 15.87% 224.409 3 Template:Mbox 10.01% 141.470 1 Template:Used_by 9.45% 133.636 1 Template:Flatlist 5.57% 78.815 1 Template:DoNotTranslate 3.75% 53.020 1 Template:Feedback --> <!-- Saved in parser cache with key mediawikiwiki:pcache:71727:|#|:idhash:canonical and timestamp 20241128162322 and revision id 6811624. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Extension:VisualEditor&oldid=6811624">https://www.mediawiki.org/w/index.php?title=Extension:VisualEditor&oldid=6811624</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:Extensions_bundled_with_MediaWiki_1.35" title="Category:Extensions bundled with MediaWiki 1.35">Extensions bundled with MediaWiki 1.35</a></li><li><a href="/wiki/Category:Stable_extensions" title="Category:Stable extensions">Stable extensions</a></li><li><a href="/wiki/Category:Page_action_extensions" title="Category:Page action extensions">Page action extensions</a></li><li><a href="/wiki/Category:Extended_syntax_extensions" title="Category:Extended syntax extensions">Extended syntax extensions</a></li><li><a href="/wiki/Category:Beta_Feature_extensions" title="Category:Beta Feature extensions">Beta Feature extensions</a></li><li><a href="/wiki/Category:Skin_extensions" title="Category:Skin extensions">Skin extensions</a></li><li><a href="/wiki/Category:MIT_licensed_extensions" title="Category:MIT licensed extensions">MIT licensed extensions</a></li><li><a href="/wiki/Category:Extensions_in_Wikimedia_version_control" title="Category:Extensions in Wikimedia version control">Extensions in Wikimedia version control</a></li><li><a href="/wiki/Category:BeforeInitialize_extensions" title="Category:BeforeInitialize extensions">BeforeInitialize extensions</a></li><li><a href="/wiki/Category:BeforePageDisplay_extensions" title="Category:BeforePageDisplay extensions">BeforePageDisplay extensions</a></li><li><a href="/wiki/Category:ChangeTagsListActive_extensions" title="Category:ChangeTagsListActive extensions">ChangeTagsListActive extensions</a></li><li><a href="/wiki/Category:CustomEditor_extensions" title="Category:CustomEditor extensions">CustomEditor extensions</a></li><li><a href="/wiki/Category:DifferenceEngineViewHeader_extensions" title="Category:DifferenceEngineViewHeader extensions">DifferenceEngineViewHeader extensions</a></li><li><a href="/wiki/Category:EditPage::showEditForm:fields_extensions" title="Category:EditPage::showEditForm:fields extensions">EditPage::showEditForm:fields extensions</a></li><li><a href="/wiki/Category:GetBetaFeaturePreferences_extensions" title="Category:GetBetaFeaturePreferences extensions">GetBetaFeaturePreferences extensions</a></li><li><a href="/wiki/Category:GetPreferences_extensions" title="Category:GetPreferences extensions">GetPreferences extensions</a></li><li><a href="/wiki/Category:ListDefinedTags_extensions" title="Category:ListDefinedTags extensions">ListDefinedTags extensions</a></li><li><a href="/wiki/Category:MakeGlobalVariablesScript_extensions" title="Category:MakeGlobalVariablesScript extensions">MakeGlobalVariablesScript extensions</a></li><li><a href="/wiki/Category:OutputPageBodyAttributes_extensions" title="Category:OutputPageBodyAttributes extensions">OutputPageBodyAttributes extensions</a></li><li><a href="/wiki/Category:ParserTestGlobals_extensions" title="Category:ParserTestGlobals extensions">ParserTestGlobals extensions</a></li><li><a href="/wiki/Category:PreferencesFormPreSave_extensions" title="Category:PreferencesFormPreSave extensions">PreferencesFormPreSave extensions</a></li><li><a href="/wiki/Category:RecentChange_save_extensions" title="Category:RecentChange save extensions">RecentChange save extensions</a></li><li><a href="/wiki/Category:RedirectSpecialArticleRedirectParams_extensions" title="Category:RedirectSpecialArticleRedirectParams extensions">RedirectSpecialArticleRedirectParams extensions</a></li><li><a href="/wiki/Category:ResourceLoaderGetConfigVars_extensions" title="Category:ResourceLoaderGetConfigVars extensions">ResourceLoaderGetConfigVars extensions</a></li><li><a href="/wiki/Category:ResourceLoaderRegisterModules_extensions" title="Category:ResourceLoaderRegisterModules extensions">ResourceLoaderRegisterModules extensions</a></li><li><a href="/wiki/Category:SkinEditSectionLinks_extensions" title="Category:SkinEditSectionLinks extensions">SkinEditSectionLinks extensions</a></li><li><a href="/wiki/Category:SkinTemplateNavigation::Universal_extensions" title="Category:SkinTemplateNavigation::Universal extensions">SkinTemplateNavigation::Universal extensions</a></li><li><a href="/wiki/Category:TextSlotDiffRendererTablePrefix_extensions" title="Category:TextSlotDiffRendererTablePrefix extensions">TextSlotDiffRendererTablePrefix extensions</a></li><li><a href="/wiki/Category:UserLoggedIn_extensions" title="Category:UserLoggedIn extensions">UserLoggedIn extensions</a></li><li><a href="/wiki/Category:All_extensions" title="Category:All extensions">All extensions</a></li><li><a href="/wiki/Category:Extensions_used_on_Wikimedia" title="Category:Extensions used on Wikimedia">Extensions used on Wikimedia</a></li><li><a href="/wiki/Category:Extensions_included_in_BlueSpice" title="Category:Extensions included in BlueSpice">Extensions included in BlueSpice</a></li><li><a href="/wiki/Category:Extensions_included_in_Canasta" title="Category:Extensions included in Canasta">Extensions included in Canasta</a></li><li><a href="/wiki/Category:Extensions_available_as_Debian_packages" title="Category:Extensions available as Debian packages">Extensions available as Debian packages</a></li><li><a href="/wiki/Category:Extensions_included_in_Fandom" title="Category:Extensions included in Fandom">Extensions included in Fandom</a></li><li><a href="/wiki/Category:Extensions_included_in_Miraheze" title="Category:Extensions included in Miraheze">Extensions included in Miraheze</a></li><li><a href="/wiki/Category:Extensions_included_in_MyWikis" title="Category:Extensions included in MyWikis">Extensions included in MyWikis</a></li><li><a href="/wiki/Category:Extensions_included_in_Open_CSP" title="Category:Extensions included in Open CSP">Extensions included in Open CSP</a></li><li><a href="/wiki/Category:Extensions_included_in_ProWiki" title="Category:Extensions included in ProWiki">Extensions included in ProWiki</a></li><li><a href="/wiki/Category:Extensions_included_in_semantic::core" title="Category:Extensions included in semantic::core">Extensions included in semantic::core</a></li><li><a href="/wiki/Category:Extensions_included_in_ShoutWiki" title="Category:Extensions included in ShoutWiki">Extensions included in ShoutWiki</a></li><li><a href="/wiki/Category:Extensions_included_in_Telepedia" title="Category:Extensions included in Telepedia">Extensions included in Telepedia</a></li><li><a href="/wiki/Category:Extensions_included_in_wiki.gg" title="Category:Extensions included in wiki.gg">Extensions included in wiki.gg</a></li><li><a href="/wiki/Category:Extensions_included_in_WikiForge" title="Category:Extensions included in WikiForge">Extensions included in WikiForge</a></li><li><a href="/wiki/Category:WYSIWYG_extensions" title="Category:WYSIWYG extensions">WYSIWYG extensions</a></li><li><a href="/wiki/Category:VisualEditor" title="Category:VisualEditor">VisualEditor</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden category: <ul><li><a href="/wiki/Category:Extensions_with_release_branches_compatibility_policy" title="Category:Extensions with release branches compatibility policy">Extensions with release branches compatibility policy</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 25 October 2024, at 17:38.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/www.mediawiki.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//m.mediawiki.org/w/index.php?title=Extension:VisualEditor&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7fc47fc68d-wtplv","wgBackendResponseTime":150,"wgPageParseReport":{"limitreport":{"cputime":"1.355","walltime":"1.699","ppvisitednodes":{"value":9207,"limit":1000000},"postexpandincludesize":{"value":143187,"limit":2097152},"templateargumentsize":{"value":35427,"limit":2097152},"expansiondepth":{"value":20,"limit":100},"expensivefunctioncount":{"value":111,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":56592,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 1413.749 1 -total"," 46.69% 660.082 1 Template:Extension"," 34.57% 488.702 102 Template:Ll"," 22.27% 314.855 134 Template:Pagelang"," 20.99% 296.730 207 Template:Translatable"," 15.87% 224.409 3 Template:Mbox"," 10.01% 141.470 1 Template:Used_by"," 9.45% 133.636 1 Template:Flatlist"," 5.57% 78.815 1 Template:DoNotTranslate"," 3.75% 53.020 1 Template:Feedback"]},"scribunto":{"limitreport-timeusage":{"value":"0.641","limit":"10.000"},"limitreport-memusage":{"value":19392983,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-7fc47fc68d-q9knr","timestamp":"20241128162322","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>