xkcdFavicon.png

Difference between revisions of "Browser helpers"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Create page documenting various browser helpers for accessing comic explanations directly from xkcd.com)
 
m
 
(26 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Over the years, a number of people have developed various "helpers" to conveniently access a comic's explanation when browsing at xkcd.com. These typically come in two main forms: browser extensions, and bookmarklets.
+
{{TOC}}Over the years, a number of people have developed various "helpers" to conveniently access a comic's explanation on this wiki when browsing a comic on [https://xkcd.com xkcd.com]. They typically come in three main forms: {{w|browser extensions}}, {{w|userscripts}}, and {{w|bookmarklets}}.
  
== Browser extensions ==
+
==Browser extensions==
 
+
These browser extensions usually inject elements/code into the xkcd.com comic page's {{w|Document Object Model|DOM}} – often inserting a button or link directly into the xkcd.com comic page itself, to take you to that comic's explanation page. None of these have been tested here.
These {{w|browser extensions}}/add-ons usually inject elements/code into the xkcd.com comic page's {{w|Document Object Model|DOM}} – often inserting a button or link directly into the xkcd.com comic page itself, to take you to that comic's explanation page. None of these have been tested here.
 
 
 
=== Chrome ===
 
  
 +
===[https://chrome.google.com/webstore/search/explain%20xkcd?_category=extensions Chrome Web Store]===
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! Extension !! Author !! Released !! Users<ref group="c">Number of users as of September 28, 2020.</ref> !! Description
+
! Extension !! Author !! Released !! Users !! Description
 
|-
 
|-
| [https://chrome.google.com/webstore/detail/explainxkcd/jkoaalfdbiipmnphkpokbigmjjlhmdbc explainxkcd]
+
| [https://chrome.google.com/webstore/detail/xkcd-explainer/foejkfobkipagoaicljcokpdbdldfmdn xkcd explainer]
| ripper234
+
| Avadonia314
| data-sort-value="2012-11" | November 2012
+
| data-sort-value="2019-04" | April 2019
| style="text-align:center;" | 54
+
| style="text-align:center;" | 55
| Adds an address bar button that pops up the comic's explanation.
+
| Adds an "Explanation" button to the comic page, which loads the content of the comic's explanation directly into the page.
 
|-
 
|-
| [https://chrome.google.com/webstore/detail/xkcd-explainer/gicgjknccfbjiipicefanafhfofcjppd xkcd Explainer]
+
| [https://chrome.google.com/webstore/detail/xkcd-enhancer/dkbjcnddbejafnbediiacbafmkgdmfel xkcd Enhancer]
| Simon Zou
+
| Tom White
| data-sort-value="2014-06" | June 2014
+
| data-sort-value="2019-02" | February 2019
| style="text-align:center;" | 3
+
| style="text-align:center;" | 25
| Adds an "I don't get it..." button to the comic page.
+
| Adds an explanation link to the comic page; also adds keyboard shortcuts, displays the title text, etc.
 
|-
 
|-
| [https://chrome.google.com/webstore/detail/explain-xkcd-link/jpkdbejdoigijlgajoffianlmimcneha Explain XKCD Link]
+
| [https://chrome.google.com/webstore/detail/xkcd-explainer/iicndfighifkfkpijajnnhhbdmnohcml XKCD Explainer]
| jkirrane
+
| contact.chilikkal
| data-sort-value="2015-01" | January 2015
+
| data-sort-value="2018-10" | October 2018
| style="text-align:center;" | 17
+
| style="text-align:center;" | 25
| Adds an explanation link to the comic page.
+
| Adds a "Huh?" button to the comic page.
|-
 
| [https://chrome.google.com/webstore/detail/explain-xkcd/ddpeicfckbciodaegmidjfhhldmfpjhh Explain XKCD]
 
| Daniel F
 
| data-sort-value="2015-03" | March 2015
 
| style="text-align:center;" | 7
 
| Adds a browser extension button that pops up a minimal explanation.
 
|-
 
| [https://chrome.google.com/webstore/detail/xkcd-enchancer/cmaebofjopmcalpjoafdfpjginapkdij XKCD Enhancer]
 
| amalbose
 
| data-sort-value="2015-12" | December 2015
 
| style="text-align:center;" | 12
 
| Adds a button to the comic page that pops up the comic's explanation; also displays the title text.
 
 
|-
 
|-
 
| [https://chrome.google.com/webstore/detail/explain-xkcd-linker/dkbhfmlonpbdbejdombiphineceidepl Explain xkcd Linker]
 
| [https://chrome.google.com/webstore/detail/explain-xkcd-linker/dkbhfmlonpbdbejdombiphineceidepl Explain xkcd Linker]
 
| Martin Petkov
 
| Martin Petkov
 
| data-sort-value="2017-02" | February 2017
 
| data-sort-value="2017-02" | February 2017
| style="text-align:center;" | 10
+
| style="text-align:center;" | 20
 
| Adds an explanation link to the comic page.
 
| Adds an explanation link to the comic page.
|-
 
| [https://chrome.google.com/webstore/detail/explain-xkcd/agbgpacakhakhjnpibhjhnkcfbiiobjj Explain xkcd]
 
| Martin Frodl
 
| data-sort-value="2017-10" | October 2017
 
| style="text-align:center;" | 1
 
| Adds a browser extension button that pops up a minimal explanation.
 
 
|-
 
|-
 
| [https://chrome.google.com/webstore/detail/xkcd-companion/ccpenjikfapfnpehglgfdbkjmojfmjfo xkcd-companion]
 
| [https://chrome.google.com/webstore/detail/xkcd-companion/ccpenjikfapfnpehglgfdbkjmojfmjfo xkcd-companion]
 
| Sean Yeh
 
| Sean Yeh
 
| data-sort-value="2018-08" | August 2018
 
| data-sort-value="2018-08" | August 2018
| style="text-align:center;" | 7
+
| style="text-align:center;" | 15
 
| Adds an explanation link to the comic page; also displays the title text.
 
| Adds an explanation link to the comic page; also displays the title text.
 
|-
 
|-
| [https://chrome.google.com/webstore/detail/xkcd-explainer/iicndfighifkfkpijajnnhhbdmnohcml XKCD Explainer]
+
| [https://chrome.google.com/webstore/detail/xkcd-explainer/gicgjknccfbjiipicefanafhfofcjppd xkcd Explainer]
| contact.chilikkal
+
| Simon Zou
| data-sort-value="2018-10" | October 2018
+
| data-sort-value="2014-06" | June 2014
| style="text-align:center;" | 34
+
| style="text-align:center;" | 5
| Adds a "Huh?" button to the comic page.
+
| Adds an "I don't get it..." button to the comic page.
|-
 
| [https://chrome.google.com/webstore/detail/explain-xkcd/fpmkngibepdfagmmmenjbfmgohlddakg explain xkcd]
 
| kylejlin.dev
 
| data-sort-value="2018-12" | December 2018
 
| style="text-align:center;" | 26
 
| Adds a browser extension button that navigates to the comic's explanation page.  See also [[Chrome Extension]] for more information on this extension.
 
|-
 
| [https://chrome.google.com/webstore/detail/xkcd-enhancer/dkbjcnddbejafnbediiacbafmkgdmfel xkcd Enhancer]
 
| Tom White
 
| data-sort-value="2019-02" | February 2019
 
| style="text-align:center;" | 35
 
| Adds an explanation link to the comic page; also adds keyboard shortcuts, displays the title text, etc.
 
|-
 
| [https://chrome.google.com/webstore/detail/xkcd-explainer/foejkfobkipagoaicljcokpdbdldfmdn xkcd explainer]
 
| Avadonia314
 
| data-sort-value="2019-04" | April 2019
 
| style="text-align:center;" | 18
 
| Adds an "Explanation" button to the comic page, which loads the content of the comic's explanation directly into the page.
 
 
|-
 
|-
 
| [https://chrome.google.com/webstore/detail/embetter-xkcd/jkeiagbmcbholabjkfdhghdocmlpkecb embetter xkcd]
 
| [https://chrome.google.com/webstore/detail/embetter-xkcd/jkeiagbmcbholabjkfdhghdocmlpkecb embetter xkcd]
 
| Matt Sugihara
 
| Matt Sugihara
 
| data-sort-value="2020-05" | May 2020
 
| data-sort-value="2020-05" | May 2020
| style="text-align:center;" | 2
+
| style="text-align:center;" | 5
 
| Press 'E' to navigate to the explanation; also adds other keyboard shortcuts and displays the title text.
 
| Press 'E' to navigate to the explanation; also adds other keyboard shortcuts and displays the title text.
 
|-
 
|-
Line 92: Line 54:
 
| TheUltimateGuide
 
| TheUltimateGuide
 
| data-sort-value="2020-08" | August 2020
 
| data-sort-value="2020-08" | August 2020
| style="text-align:center;" | 2
+
| style="text-align:center;" | 1
 
| Adds a browser extension button that pops up another button that navigates to the explanation.
 
| Adds a browser extension button that pops up another button that navigates to the explanation.
 
|}
 
|}
<references group="c" />
 
 
=== Firefox ===
 
 
  
 +
===[https://addons.mozilla.org/en-CA/firefox/search/?q=explain%20xkcd&sort=updated&type=extension Firefox Add-ons]===
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! Extension !! Author !! Released !! Users<ref group="f">Number of users as of September 28, 2020.</ref> !! Description
+
! Extension !! Author !! Released !! Users !! Description
 +
|-
 +
| [https://addons.mozilla.org/firefox/addon/xkcd-explainer/ XKCD Explainer]
 +
| Yechiel K
 +
| data-sort-value="2018-10" | October 2018
 +
| style="text-align:center;" | 65
 +
| Adds a "Huh?" button to the comic page.
 
|-
 
|-
 
| [https://addons.mozilla.org/firefox/addon/xkcd-companion/ xkcd Companion]
 
| [https://addons.mozilla.org/firefox/addon/xkcd-companion/ xkcd Companion]
 
| Sean Yeh
 
| Sean Yeh
 
| data-sort-value="2018-07" | July 2018
 
| data-sort-value="2018-07" | July 2018
| style="text-align:center;" | 16
+
| style="text-align:center;" | 15
 
| Adds an explanation link to the comic page; also displays the title text.
 
| Adds an explanation link to the comic page; also displays the title text.
 
|-
 
|-
| [https://addons.mozilla.org/firefox/addon/xkcd-explainer/ XKCD Explainer]
+
| [https://addons.mozilla.org/firefox/addon/explain-xkcd/ Explain XKCD]
| Yechiel K
+
| Newt
| data-sort-value="2018-10" | October 2018
+
| data-sort-value="2019-07" | July 2019
| style="text-align:center;" | 46
+
| style="text-align:center;" | 25
| Adds a "Huh?" button to the comic page.
+
| Adds an address bar button.
 
|-
 
|-
 
| [https://addons.mozilla.org/firefox/addon/xkcd-enchancer/ XKCD Enhancer]
 
| [https://addons.mozilla.org/firefox/addon/xkcd-enchancer/ XKCD Enhancer]
Line 126: Line 91:
 
| data-sort-value="2019-03-22" | March 2019
 
| data-sort-value="2019-03-22" | March 2019
 
| style="text-align:center;" | 1
 
| style="text-align:center;" | 1
| Replaces one of the existing navigation buttons on the comic page.
+
| Replaces the store link (or other link) on the comic page with a link to the explanation.
|-
 
| [https://addons.mozilla.org/firefox/addon/explain-xkcd/ Explain XKCD]
 
| Newt
 
| data-sort-value="2019-07" | July 2019
 
| style="text-align:center;" | 14
 
| Adds an address bar button.
 
 
|-
 
|-
 
| [https://addons.mozilla.org/firefox/addon/xkcd-explanifier/ xkcd Explanifier]
 
| [https://addons.mozilla.org/firefox/addon/xkcd-explanifier/ xkcd Explanifier]
Line 140: Line 99:
 
| Adds a browser extension button that pops up another button that navigates to the explanation.
 
| Adds a browser extension button that pops up another button that navigates to the explanation.
 
|}
 
|}
<references group="f" />
 
  
== Bookmarklets ==
+
===[https://microsoftedge.microsoft.com/addons/search/explain%20xkcd Edge Add-ons]===
 +
{| class="wikitable sortable"
 +
|-
 +
! Extension !! Author !! Released !! Users !! Description
 +
|-
 +
| [https://microsoftedge.microsoft.com/addons/detail/xkcd-explanifier/pdinoolencdkjjclmeknfehidblgjneh xkcd Explanifier]
 +
| TheUltimateGuide
 +
| data-sort-value="2020-08" | August 2020
 +
| style="text-align:center;" | 50
 +
| Adds a browser extension button that pops up another button that navigates to the explanation.
 +
|}
 +
 
 +
==Userscripts==
 +
{{w|Userscripts}} provide basically the same functions as the browser extensions above, manipulating xkcd.com's DOM to insert buttons/links or otherwise alter the page.  The difference is that you can view/edit the code of these userscripts; however, they require a {{w|userscript manager}} such as {{w|Greasemonkey}} or {{w|Tampermonkey}} to run.  None of these userscripts have been tested here.
  
Inspired by the following suggestions:
+
===Userscript managers===
* [[:explain_xkcd:Community_portal/Proposals#Add_bookmark]]
+
* For Firefox <small>(Firefox Browser Add-ons)</small>: [https://addons.mozilla.org/firefox/addon/greasemonkey/ Greasemonkey], [https://addons.mozilla.org/firefox/addon/tampermonkey/ Tampermonkey] or [https://addons.mozilla.org/firefox/addon/violentmonkey/ Violentmonkey]
* [[:explain xkcd:Community portal/Technical#Bookmarklet for jumping to explainxkcd.com from xkcd.com]]
+
* For Chrome <small>(Chrome Web Store)</small>: [https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo Tampermonkey] or [https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag Violentmonkey]
* [[:explain xkcd:Community portal/Miscellaneous#Bookmarklet]]
+
* For Edge <small>(Edge Add-ons)</small>: [https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd Tampermonkey] or [https://microsoftedge.microsoft.com/addons/detail/violentmonkey/eeagobfjdenkkddmbclomhiblgggliao Violentmonkey]
 +
* For Opera <small>(Opera addons)</small>: [https://addons.opera.com/en/extensions/details/tampermonkey-beta/ Tampermonkey]
 +
* For Safari <small>(Apple App Store)</small>: [https://apps.apple.com/app/tampermonkey/id1482490089 Tampermonkey] (paid download) or [https://apps.apple.com/app/userscripts/id1463298887 Userscripts] (free download)
 +
 
 +
===Userscripts===
 +
Mostly from [https://greasyfork.org/en/scripts?filter_locale=0&language=all&q=explainxkcd&sort=updated Greasy Fork] and [https://openuserjs.org/?orderBy=updated&orderDir=desc&q=explainxkcd OpenUserJS], with a few from GitHub [https://github.com/search?q=explainxkcd&type=Repositories&s=updated&o=asc repositories] or [https://gist.github.com/search?q=explainxkcd+anon%3Atrue&s=updated&o=asc Gists]:
 +
{| class="wikitable sortable"
 +
|-
 +
! Userscript !! Author !! Source !! Released !! Description
 +
|-
 +
| [https://greasyfork.org/en/scripts/17-xkcd xkcd+]
 +
| LouCypher
 +
| Greasy Fork
 +
| data-sort-value="2014-03" | March 2014
 +
| Adds a "?" button to the comic page; also adds an "i" button for the official transcript, and social media sharing buttons.
 +
|-
 +
| [https://greasyfork.org/en/scripts/3762-xkcd-title-and-explain xkcd Title and Explain]
 +
| Doodles
 +
| Greasy Fork
 +
| data-sort-value="2014-07" | July 2014
 +
| Adds an "Explanation" button to the comic page; also displays the title text.
 +
|-
 +
| [https://greasyfork.org/en/scripts/6978-xkcd-buttons-alt-transcript-explainxkcd xkcd buttons Alt+Transcript+Explainxkcd]
 +
| SammaySarkar
 +
| Greasy Fork
 +
| data-sort-value="2014-12" | December 2014
 +
| Adds an "Explain" button to the comic page; also adds buttons to display the title text and official transcript, and keyboard shortcuts.
 +
|-
 +
| [https://greasyfork.org/en/scripts/1774-xkcd-enhancments XKCD enhancements]
 +
| JonnyRobbie
 +
| Greasy Fork
 +
| data-sort-value="2015-03" | March 2015
 +
| Converts the comic name into an "ExplainXKCD" link when hovering your mouse pointer over it; also displays the title text by clicking the comic.
 +
|-
 +
| [https://gist.github.com/magazov/934de662d60c9fb5fea9 explain_xkcd.js]
 +
| [[User:Magazovski|magazov]]
 +
| GitHub Gist
 +
| data-sort-value="2015-04" | April 2015
 +
| Adds an "Explain" button to the comic page.
 +
|-
 +
| [https://greasyfork.org/en/scripts/3188-xkcd-tooltip XKCD tooltip]
 +
| Lorentz83
 +
| Greasy Fork
 +
| data-sort-value="2016-04" | April 2016
 +
| Adds an explanation link; also displays the title text.
 +
|-
 +
| [https://greasyfork.org/en/scripts/22743-xkcd-add-explainxkcd-com-links-to-comics xkcd: Add explainxkcd.com links to comics]
 +
| Daniel del Zorro Multicolor (Foxical Paradox)
 +
| Greasy Fork
 +
| data-sort-value="2016-08" | August 2016
 +
| Adds an explanation link.
 +
|-
 +
| [https://openuserjs.org/scripts/obskyr/Explain_XKCD_Button Explain XKCD Button]
 +
| obskyr
 +
| OpenUserJS
 +
| data-sort-value="2017-02" | February 2017
 +
| Adds an explanation link.
 +
|-
 +
| [https://greasyfork.org/en/scripts/37912-xkcd-title-text xkcd title text]
 +
| Tilwa Qendov
 +
| Greasy Fork
 +
| data-sort-value="2018-01" | January 2018
 +
| Adds an explanation link; also displays the title text, and adds links to signed prints in the [[Store|xkcd store]].
 +
|-
 +
| [https://greasyfork.org/en/scripts/22199-xkcd-tweaks xkcd Tweaks]
 +
| MitalAshok
 +
| Greasy Fork
 +
| data-sort-value="2018-02" | February 2018
 +
| Adds an "Explain!" link; also displays the title text, adds keyboard shortcuts, and various other modifications.
 +
|-
 +
| [https://openuserjs.org/scripts/BigTSDMB/Explain_XKCD_Button Explain XKCD Button]
 +
| BigTSDMB
 +
| OpenUserJS
 +
| data-sort-value="2018-04" | April 2018
 +
| Adds an explanation link.
 +
|-
 +
| [https://github.com/David-Hickey/ExplainXKCD-Button-Userscript ExplainXKCD-Button Userscript]
 +
| David-Hickey
 +
| GitHub
 +
| data-sort-value="2019-01" | January 2019
 +
| Replaces the store link (or other link) on the comic page with a link to the explanation.
 +
|-
 +
| [https://openuserjs.org/scripts/Mr_FJ/ExplainXKCD_button ExplainXKCD button]
 +
| Mr_FJ
 +
| OpenUserJS
 +
| data-sort-value="2019-07" | July 2019
 +
| Adds an explanation button.
 +
|-
 +
| [https://gist.github.com/lastsecondsave/e8f88ab00a1675cd7384 explain_xkcd.user.js]
 +
| lastsecondsave
 +
| GitHub Gist
 +
| data-sort-value="2019-12" | December 2019
 +
| Adds an explanation button.
 +
|-
 +
| [https://greasyfork.org/en/scripts/398595-xkcd-explain-button XKCD Explain Button]
 +
| saamirt
 +
| Greasy Fork
 +
| data-sort-value="2020-03" | March 2020
 +
| Adds an "Explanation" button to the comic page.
 +
|}
  
 +
==Bookmarklets==
 
Instead of a browser add-on/extension, you can create a ''bookmarklet'' to take you from an xkcd.com comic page to the corresponding explainxkcd.com explanation page.  A {{w|bookmarklet}} is a browser bookmark/favorite, except instead of containing a URL to a webpage, it contains custom {{w|JavaScript}} code to perform the desired operation.  The easiest way to create a bookmarklet in your browser is to first create a normal bookmark/favorite for any webpage, then ''edit'' that new bookmark to paste in the JavaScript code as the new "location"/"URL"/"address" of the bookmark.  General instructions for creating and editing bookmarks in various web browsers are as follows:
 
Instead of a browser add-on/extension, you can create a ''bookmarklet'' to take you from an xkcd.com comic page to the corresponding explainxkcd.com explanation page.  A {{w|bookmarklet}} is a browser bookmark/favorite, except instead of containing a URL to a webpage, it contains custom {{w|JavaScript}} code to perform the desired operation.  The easiest way to create a bookmarklet in your browser is to first create a normal bookmark/favorite for any webpage, then ''edit'' that new bookmark to paste in the JavaScript code as the new "location"/"URL"/"address" of the bookmark.  General instructions for creating and editing bookmarks in various web browsers are as follows:
 
* [https://support.mozilla.org/kb/bookmarks-firefox Mozilla Firefox]
 
* [https://support.mozilla.org/kb/bookmarks-firefox Mozilla Firefox]
Line 253: Line 324:
 
}());
 
}());
 
</pre>
 
</pre>
 +
[[208: Regular Expressions|Tap, tap, PERL!]]
  
[[208: Regular Expressions|Tap, tap, PERL!]]
+
Inspired by the following suggestions:
 +
* [https://gist.github.com/jeffalexander/4735750 gist.github.com/jeffalexander/xkcd-show-image-title-bookmarklet.js] (March 2013)
 +
* [https://gist.github.com/sheabunge/6043015 gist.github.com/sheabunge/explainxkcd.js] (July 2013)
 +
* [[explain xkcd:Community portal/Technical#Bookmarklet for jumping to explainxkcd.com from xkcd.com]], from [[User:Mattflaschen|Mattflaschen]] (August 2013)
 +
* [https://github.com/kAbhi/explainxkcd github.com/kAbhi/explainxkcd] (December 2014)
 +
* [[explain xkcd:Community portal/Miscellaneous#Bookmarklet]], from [[Special:Contributions/108.162.229.100|108.162.229.100]] (January 2015)
 +
* [https://gist.github.com/ClarSco/74c7c5548ff3f99a3f242ff94e49869a gist.github.com/ClarSco/explainXkcdBookmarklet.js] (July 2017)
 +
* [[Talk:Main Page#Bookmark]], from [[Special:Contributions/172.68.47.84|172.68.47.84]] (December 2018)
 +
* [[explain xkcd:Community portal/Proposals#Add bookmark]], from [[User:Kwonunn|Kwonunn]] (May 2019)
  
 
[[Category:Meta]]
 
[[Category:Meta]]
 +
{{xkcdmeta}}

Latest revision as of 11:10, 1 September 2023

Over the years, a number of people have developed various "helpers" to conveniently access a comic's explanation on this wiki when browsing a comic on xkcd.com. They typically come in three main forms: browser extensions, userscripts, and bookmarklets.

Browser extensions[edit]

These browser extensions usually inject elements/code into the xkcd.com comic page's DOM – often inserting a button or link directly into the xkcd.com comic page itself, to take you to that comic's explanation page. None of these have been tested here.

Chrome Web Store[edit]

Extension Author Released Users Description
xkcd explainer Avadonia314 April 2019 55 Adds an "Explanation" button to the comic page, which loads the content of the comic's explanation directly into the page.
xkcd Enhancer Tom White February 2019 25 Adds an explanation link to the comic page; also adds keyboard shortcuts, displays the title text, etc.
XKCD Explainer contact.chilikkal October 2018 25 Adds a "Huh?" button to the comic page.
Explain xkcd Linker Martin Petkov February 2017 20 Adds an explanation link to the comic page.
xkcd-companion Sean Yeh August 2018 15 Adds an explanation link to the comic page; also displays the title text.
xkcd Explainer Simon Zou June 2014 5 Adds an "I don't get it..." button to the comic page.
embetter xkcd Matt Sugihara May 2020 5 Press 'E' to navigate to the explanation; also adds other keyboard shortcuts and displays the title text.
xkcd Explanifier TheUltimateGuide August 2020 1 Adds a browser extension button that pops up another button that navigates to the explanation.

Firefox Add-ons[edit]

Extension Author Released Users Description
XKCD Explainer Yechiel K October 2018 65 Adds a "Huh?" button to the comic page.
xkcd Companion Sean Yeh July 2018 15 Adds an explanation link to the comic page; also displays the title text.
Explain XKCD Newt July 2019 25 Adds an address bar button.
XKCD Enhancer AstroRP March 2019 1 Adds an explanation button to the comic page; also redirects to m.xkcd.com on mobile devices.
ExplainXKCD Button David Hickey March 2019 1 Replaces the store link (or other link) on the comic page with a link to the explanation.
xkcd Explanifier TheUltimateGuide August 2020 1 Adds a browser extension button that pops up another button that navigates to the explanation.

Edge Add-ons[edit]

Extension Author Released Users Description
xkcd Explanifier TheUltimateGuide August 2020 50 Adds a browser extension button that pops up another button that navigates to the explanation.

Userscripts[edit]

Userscripts provide basically the same functions as the browser extensions above, manipulating xkcd.com's DOM to insert buttons/links or otherwise alter the page. The difference is that you can view/edit the code of these userscripts; however, they require a userscript manager such as Greasemonkey or Tampermonkey to run. None of these userscripts have been tested here.

Userscript managers[edit]

Userscripts[edit]

Mostly from Greasy Fork and OpenUserJS, with a few from GitHub repositories or Gists:

Userscript Author Source Released Description
xkcd+ LouCypher Greasy Fork March 2014 Adds a "?" button to the comic page; also adds an "i" button for the official transcript, and social media sharing buttons.
xkcd Title and Explain Doodles Greasy Fork July 2014 Adds an "Explanation" button to the comic page; also displays the title text.
xkcd buttons Alt+Transcript+Explainxkcd SammaySarkar Greasy Fork December 2014 Adds an "Explain" button to the comic page; also adds buttons to display the title text and official transcript, and keyboard shortcuts.
XKCD enhancements JonnyRobbie Greasy Fork March 2015 Converts the comic name into an "ExplainXKCD" link when hovering your mouse pointer over it; also displays the title text by clicking the comic.
explain_xkcd.js magazov GitHub Gist April 2015 Adds an "Explain" button to the comic page.
XKCD tooltip Lorentz83 Greasy Fork April 2016 Adds an explanation link; also displays the title text.
xkcd: Add explainxkcd.com links to comics Daniel del Zorro Multicolor (Foxical Paradox) Greasy Fork August 2016 Adds an explanation link.
Explain XKCD Button obskyr OpenUserJS February 2017 Adds an explanation link.
xkcd title text Tilwa Qendov Greasy Fork January 2018 Adds an explanation link; also displays the title text, and adds links to signed prints in the xkcd store.
xkcd Tweaks MitalAshok Greasy Fork February 2018 Adds an "Explain!" link; also displays the title text, adds keyboard shortcuts, and various other modifications.
Explain XKCD Button BigTSDMB OpenUserJS April 2018 Adds an explanation link.
ExplainXKCD-Button Userscript David-Hickey GitHub January 2019 Replaces the store link (or other link) on the comic page with a link to the explanation.
ExplainXKCD button Mr_FJ OpenUserJS July 2019 Adds an explanation button.
explain_xkcd.user.js lastsecondsave GitHub Gist December 2019 Adds an explanation button.
XKCD Explain Button saamirt Greasy Fork March 2020 Adds an "Explanation" button to the comic page.

Bookmarklets[edit]

Instead of a browser add-on/extension, you can create a bookmarklet to take you from an xkcd.com comic page to the corresponding explainxkcd.com explanation page. A bookmarklet is a browser bookmark/favorite, except instead of containing a URL to a webpage, it contains custom JavaScript code to perform the desired operation. The easiest way to create a bookmarklet in your browser is to first create a normal bookmark/favorite for any webpage, then edit that new bookmark to paste in the JavaScript code as the new "location"/"URL"/"address" of the bookmark. General instructions for creating and editing bookmarks in various web browsers are as follows:

Select one of the JavaScript code snippets below to copy/paste as the bookmarklet's URL/location. To use it, browse to an xkcd.com comic webpage, then while on that page, invoke the bookmark/favorite.

These have been tested in Firefox 80, Chrome 85, Edge 85, Opera 71, and Safari 13.

Concise[edit]

These "concise" bookmarklets are shorter and easier to read one-liners, and should mostly work OK, but might produce errors if used on webpages other than xkcd comics.

Same tab:

javascript:location.hostname='explainxkcd.com'

New tab/window:

javascript:void open(location.href.replace('xkcd.com','explainxkcd.com'))

Verbose[edit]

These "verbose" bookmarklets are longer and harder to read (as they also validate that you are, in fact, on an xkcd.com comic page before attempting to load the corresponding explanation page), but they are technically more "correct". Note that each of these is a single line of code, despite any word-wrapping.

Same tab:

javascript:(function() { "use strict"; const isXkcdDotCom = (window.location.hostname === "xkcd.com"); const isComicPage = (new RegExp(/^\/$|^\/\d+\/$/).test(window.location.pathname)); if (isXkcdDotCom && isComicPage) { window.location.hostname = "explainxkcd.com"; } else { window.alert("The current page does not appear to be an xkcd comic page."); } }());

New tab/window:

javascript:(function() { "use strict"; const isXkcdDotCom = (window.location.hostname === "xkcd.com"); const isComicPage = (new RegExp(/^\/$|^\/\d+\/$/).test(window.location.pathname)); if (isXkcdDotCom && isComicPage) { const newLocation = new URL(window.location.href); newLocation.hostname = "explainxkcd.com"; window.open(newLocation.href, "_blank"); } else { window.alert("The current page does not appear to be an xkcd comic page."); } }());

Code explanation:

javascript:

// As a best practice, encapsulate everything within a self-invoking function,
// to not interfere with the global namespace of the current page.
(function() {
  "use strict";
  // Develop in "strict" mode, to be more picky.

  // Check if we're at exactly the root domain of xkcd.com,
  // no "www" (which redirects to the root domain anyway), and no subdomains.
  // Also no need to worry about the protocol,
  // as both xkcd.com and explainxkcd.com redirect from HTTP to HTTPS.
  const isXkcdDotCom = (window.location.hostname === "xkcd.com");

  // Check if we're on a comic page.
  // The path for a comic will be either the root of the site ("/") for the current comic,
  // or a numbered page ("/123/").
  const isComicPage = (new RegExp(/^\/$|^\/\d+\/$/).test(window.location.pathname));

  // The above regular expression is explained as follows:
  // / = begin regex.
  //     ^  = match the beginning of the string (i.e. require it to be the first thing in the path).
  //     \/ = match a forward-slash (must be escaped with a back-slash).
  //     $  = match the end of the string (i.e. require it to be the last thing in the path).
  //   | = match EITHER the regex above (i.e. the root path), OR the regex below (i.e. a comic number).
  //     ^  = match the beginning of the string (i.e. require it to be the first thing in the path).
  //     \/ = match a forward-slash (must be escaped with a back-slash).
  //     \d = match a decimal digit.
  //     +  = match ONE OR MORE of the preceding item (i.e. one or more decimal digits).
  //     \/ = match a forward-slash (must be escaped with a back-slash).
  //     $  = match the end of the string (i.e. require it to be the last thing in the path).
  // / = end regex.

  if (isXkcdDotCom && isComicPage) {
    // Yes, we're on a valid comic page at xkcd.com,
    // so navigate to the corresponding page at explainxkcd.com.

    // Get a copy of the current URL, ...
    const newLocation = new URL(window.location.href);

    // ...set its domain to explainxkcd.com...
    newLocation.hostname = "explainxkcd.com";

    // ...and open it in a new tab/window by specifying the target as "_blank".
    window.open(newLocation.href, "_blank");

    // For the xkcd.com site root (which is the most recent comic),
    // this will take us to the main page at explainxkcd.com,
    // which also has the explanation for the most recent comic.

    // For numbered comic pages, this will navigate to explainxkcd.com/<number>/,
    // which redirects to the correct page for that comic number.

  } else {
    // We're not on a comic page at xkcd.com,
    // so show an error message instead of navigating to explainxkcd.com.
    window.alert("The current page does not appear to be an xkcd comic page.");
  }
}());

Tap, tap, PERL!

Inspired by the following suggestions: