{"id":21616517,"url":"https://github.com/jkmartindale/bookmarklets","last_synced_at":"2026-05-12T12:42:30.111Z","repository":{"id":111934871,"uuid":"126657586","full_name":"jkmartindale/bookmarklets","owner":"jkmartindale","description":"Bookmarklets are snippets of JavaScript hiding in a bookmark. Think of them as miniature mobile-supporting browser extensions. I’ve made a bunch of really simple ones to help with various things.","archived":false,"fork":false,"pushed_at":"2021-08-08T11:55:09.000Z","size":53,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T17:24:36.808Z","etag":null,"topics":["bookmarklet","google-play-store","vine"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkmartindale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-25T02:24:05.000Z","updated_at":"2022-12-09T16:01:16.000Z","dependencies_parsed_at":"2023-04-22T08:25:55.393Z","dependency_job_id":null,"html_url":"https://github.com/jkmartindale/bookmarklets","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jkmartindale/bookmarklets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkmartindale%2Fbookmarklets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkmartindale%2Fbookmarklets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkmartindale%2Fbookmarklets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkmartindale%2Fbookmarklets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkmartindale","download_url":"https://codeload.github.com/jkmartindale/bookmarklets/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkmartindale%2Fbookmarklets/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269832909,"owners_count":24482334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmarklet","google-play-store","vine"],"created_at":"2024-11-24T22:14:39.903Z","updated_at":"2026-05-12T12:42:30.053Z","avatar_url":"https://github.com/jkmartindale.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--{% comment %}--\u003e\n# Bookmarklets\nThis repository holds the source code for the smattering of arbitrary bookmarklets I've written. For details and installation, head over to my [bookmarklets page](https://jkmartindale.github.io/bookmarklets/).\n\n\u0026nbsp;\n\u003c!--{% endcomment %}--\u003e\n{% comment %}\n\u003c!--{% endcomment %}\n# Archive.org Lookup\nSearches archive.org for captures of the current webpage.\n```javascript\njavascript:window.open(\"https://web.archive.org/web/*/\"+window.location.href)\n```\n\n# Clean Ellucian Banner Transcript\nBanner is hot garbage and their unofficial transcript page looks disgusting. This helps make things look nicer for printing.\n[[Unminified]](https://github.com/jkmartindale/bookmarklets/blob/main/clean-banner-transcript.js)\n```javascript\njavascript:function d(a){var b=0;return function(){return b\u003ca.length?{done:!1,value:a[b++]}:{done:!0}}}document.getElementsByClassName(\"pageheaderdiv1\")[0].remove();document.getElementsByClassName(\"headerlinksdiv\")[0].remove();document.getElementsByClassName(\"plaintable\")[0].remove();document.getElementsByClassName(\"headerwrapperdiv\")[0].style.paddingTop=0;\n[].concat(function(a){if(!(a instanceof Array)){var b=\"undefined\"!=typeof Symbol\u0026\u0026Symbol.iterator\u0026\u0026a[Symbol.iterator];a=b?b.call(a):{next:d(a)};for(var c=[];!(b=a.next()).done;)c.push(b.value);a=c}return a}(document.getElementsByClassName(\"pagebodydiv\")[0].childNodes)).map(function(a){a.nodeType!=Node.TEXT_NODE\u0026\u0026\"A\"!=a.tagName||a.remove()});document.styleSheets[1].insertRule(\"tr{break-inside:avoid}\");\n```\n\n# Copy Amazon Link\nCopies a minified version of the current Amazon store page without all the gross tracking crap.\n```javascript\njavascript:(function(){var a=window.location.pathname,b=/(\\/\\w{0,3}\\/\\w+)\\/?(ref)?/.exec(a);a=window.location.origin+(b?b[1]:a);history.pushState(void 0,void 0,a);b=document.createElement(\"textarea\");b.value=a;document.body.appendChild(b);b.select();document.execCommand(\"copy\");document.body.removeChild(b)})()\n```\n\n# Enable Selection\nFor when websites are jerks and don't want you selecting stuff.  \n[[Unminified]](https://github.com/jkmartindale/bookmarklets/blob/main/enable-selection.js)\n```javascript\ndocument.g=null;document.oncontextmenu=null;document.onkeydown=null;document.onselectstart=null;document.onmousedown=null;document.onclick=null;document.body.onselectstart=null;document.body.onmousedown=null;document.body.classList.remove(\"unselectable\");document.documentElement.style.userSelect=\"auto\";document.body.style.cursor=\"auto\";\n```\n\n# Google Play App Beta\nActivate this bookmarklet on a Google Play app page to enroll in the beta program (if there is one).\n```javascript\njavascript:window.location=\"https://play.google.com/apps/testing/\"+window.location.href.match(/https:\\/\\/play\\.google\\.com\\/store\\/apps\\/details\\?id=([\\w.]+)/)[1]\n```\n\n# Google Play Music Cover Art\nActivate this bookmarklet on an album page on Google Play to grab some high-resolution cover art.\n```javascript\njavascript:open(document.getElementsByClassName(\"cover-image\")[0].src.replace(\"w300-rw\", \"w16383-rw\"))\n```\n\n# ICANN WHOIS\nLooks up the WHOIS record of the current domain.\n```javascript\njavascript:window.open(\"https://whois.icann.org/en/lookup?name=\"+window.location.hostname)\n```\n\n# New York Times Paywall Bypass\n```javascript\njavascript:document.cookie=\"nyt-m=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=.nytimes.com;path=/\";location.reload()\n```\n\n# noquery\nRemoves from the address bar the crap after the question mark in the current URL.\n```javascript\njavascript:history.pushState({}, '', window.location.protocol + '//' + window.location.host + window.location.pathname)\n```\n\n# PageSpeed Insights\nRuns the current webpage through Google PageSpeed Insights to get suggestions for making the webpage faster.\n```javascript\njavascript:window.open(\"https://developers.google.com/speed/pagespeed/insights/?url=\"+window.location.href)\n```\n\n# Spotify Cover Art\nOpens the cover art from a Spotify album page in a new tab.\n```javascript\njavascript:let srcset = document.body.querySelectorAll(\"img[srcset]\")[0].srcset.split(\", \"); open(srcset[srcset.length - 1].split(\" \")[0])\n```\n\n# Steam Gem Value\nActivate this bookmarklet on an item listing in the Steam Community Market to find out how much an item is worth in gems. For details on how this works, see [this Arqade answer](https://gaming.stackexchange.com/a/351941/218385).\n```javascript\njavascript:var a=g_rgAssets[Object.keys(g_rgAssets)[0]],b=a[Object.keys(a)[0]],c=b[Object.keys(b)[0]],gem_action=c.owner_actions\u0026\u0026c.owner_actions.filter(function(d){return/javascript:GetGooValue/.test(d.link)})[0];if(gem_action){var matches=gem_action.link.match(/javascript:GetGooValue\\( '%contextid%', '%assetid%', (\\d+), (\\d+), \\d+ \\)/);fetch(\"https://steamcommunity.com/auction/ajaxgetgoovalueforitemtype/?appid=\"+matches[1]+\"\u0026item_type=\"+matches[2]+\"\u0026border_color=0\").then(function(d){return d.json()}).then(function(d){alert(\"This is worth \"+d.goo_value+\" gems\")})[\"catch\"](function(d){return console.error(d)})}else alert(\"This is worth 0 gems\");\n```\n\n# Unhide Reddit Downvote Arrows\nFor those times when subreddit moderators have disabled downvotes but you still gotta be a jerk anyway.\n```javascript\njavascript:(function(){var a=document.getElementsByClassName(\"down\"),b;for(b in a)a[b].style.display=\"block\"})()\n```\n\n# Targeter\nTap/click somewhere and get a best effort guess for a target to use to jump to that part of the page. Probably doesn't work very well.  \n[[Unminified]](https://github.com/jkmartindale/bookmarklets/blob/main/targeter.js)\n```javascript\nfunction b(a){document.body.style.cursor=\"default\";document.removeEventListener(\"click\",b,!1);a=a||window.event;a=a.target||a.srcElement;a=a==document.body?null:a.id?a.id:a.name?a.name:void 0;for(console.log(\"I think the ideal target would be \"+a.id);!a.id;){console.log(a);if(a==document.body)return;a=a.previousElementSibling||a.parentNode}console.log(a)}document.addEventListener(\"click\",b,!1);document.body.style.cursor=\"crosshair\";\n```\n\n# Vine Downloader\nOpens the MP4 from a single Vine's page.\n```javascript\njavascript:open(\"http://v.cdn.vine.co/r/videos_dashhd/\"+/https:\\/\\/v\\.cdn\\.vine\\.co\\/r\\/videos\\/(.*).jpg/.exec(document.getElementsByTagName(\"video\")[0].poster)[1])\n```\n\n# Web of Trust\nOpens the Web of Trust reputation page for the current domain or subdomain.\n```javascript\njavascript:open(\"https://www.mywot.com/scorecard/\"+window.location.host)\n```\n\n# Website Grader\nRuns the current domain through HubSpot's Website Grader, checking for basic\nperformance and SEO issues.\n```javascript\njavascript:window.open(\"https://website.grader.com/results/\"+window.location.hostname)\n```\n\n# WIRED Paywall Bypass\n```javascript\njavascript:document.cookie=\"pay_ent_smp=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=.wired.com;path=/\";location.reload()\n```\n\n# YELL\nUppercases the selected text.\n```javascript\njavascript:(()=\u003e{var selection = window.getSelection();var original = selection.anchorNode.textContent;selection.anchorNode.textContent = selection.anchorNode.textContent.replace(original, original.toUpperCase());})();\n```{% comment %}\n--\u003e{% endcomment %}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkmartindale%2Fbookmarklets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkmartindale%2Fbookmarklets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkmartindale%2Fbookmarklets/lists"}