{"id":3419,"date":"2026-07-05T22:15:21","date_gmt":"2026-07-05T22:15:21","guid":{"rendered":"https:\/\/exponentialdecay.co.uk\/blog\/?p=3419"},"modified":"2026-07-07T10:27:16","modified_gmt":"2026-07-07T10:27:16","slug":"shortened-links-expand-them-and-save-the-urls","status":"publish","type":"post","link":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/","title":{"rendered":"Shortened links? Expand them and save the URLs"},"content":{"rendered":"<p>Shortened links are a digital preservation and web archiving nightmare. You can imagine how they need to work:<\/p>\n<ol>\n<li>Create a unique short code for a given (target) URL (like a hash, but far far shorter)<\/li>\n<li>Pair the short code with your URL in a database.<\/li>\n<li>Create a redirect rule on the URL shortening server from the new source URL to the target URL.<\/li>\n<li>Send the shortened link to the caller, e.g. <code>shortURL.com\/123badf00d<\/code><\/li>\n<li><em>In-perpetuity:<\/em> continue to pay for your domain; maintain the database; look after redirect rules during server migrations; ensure duplicate short-codes are not created.<\/li>\n<\/ol>\n<p>A URL-shortening business in five easy steps.<\/p>\n<p>But what does that mean for digital preservation?<\/p>\n<p><!--more--><\/p>\n<h2>URL shortening and digital preservation<\/h2>\n<p>There are different degrees of issue with URL shortening.<\/p>\n<ol>\n<li>The reality is that databases of redirects are not maintained and links disappear.<\/li>\n<li>Shortened links obfuscate meaning and may be harmful.<\/li>\n<\/ol>\n<p>The problem of (2) can happen with regular hyperlinks, especially with domain squatting, but domain squatting aside, there&#8217;s usually some authority, and thus provenance, associated with a domain name and its top-level-domain, e.g. you should usually be fine with <code>.gov .edu<\/code> and so on.<\/p>\n<p><em><strong>NB.<\/strong> I don&#8217;t have numbers on skew. Skew is usually the phenomenon of content changing behind a hyperlink after it was first published, but with short URLs, skew might mean pointing to two different domains over time. I have only seen something similar with QR codes that used an additional proxy in between the redirect to enable the target URL to be <a href=\"https:\/\/www.youtube.com\/watch?v=g3j9muCo4o0\" target=\"_blank\" rel=\"noopener\">updated and replaced multiple times<\/a>; but this is not a dissimilar mechanism from a URL shortening service.<\/em><\/p>\n<h2>Can I get more information?<\/h2>\n<p>Take a bit.ly URL that works today&#8230; <code>bit.ly\/2lfnTqv<\/code><\/p>\n<p>Use cURL to get the header information <a href=\"https:\/\/explainshell.com\/explain?cmd=curl+-I\" target=\"_blank\" rel=\"noopener\">with the -I flag<\/a>: <code>curl -I bit.ly\/2lfnTqv<\/code><\/p>\n<pre><strong>HTTP\/1.1 301 Moved Permanently<\/strong>\r\nServer: nginx\r\nDate: Thu, 02 Jul 2026 17:47:26 GMT\r\nContent-Type: text\/html; charset=utf-8\r\nContent-Length: 130\r\nCache-Control: private, max-age=90\r\nContent-Security-Policy: referrer always;\r\n<strong>Location: http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/<\/strong>\r\nReferrer-Policy: unsafe-url\r\nSet-Cookie: _bit=q62hLq-038ddea2565856aace-00S; Domain=bit.ly; Expires=Tue, 29 Dec 2026 17:47:26 GMT\r\nX-Robots-Tag: noindex\r\nVia: 1.1 google\r\n<\/pre>\n<p>I have highlighted three key pieces of information that we really need to pay attention to:<\/p>\n<ul>\n<li>HTTP redirect code and reason: <code>HTTP\/1.1 301 Moved Permanently<\/code><\/li>\n<li>Location (target) of the redirect: <code>Location: http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/<\/code><\/li>\n<li>And the source URL, the shortened link: <code>bit.ly\/2lfnTqv<\/code><\/li>\n<\/ul>\n<p>The <em>redirect<\/em> here is\u00a0<strong>301<\/strong><strong>: Moved Permanently,\u00a0<\/strong>This belongs to a class of <em>&#8220;3.x.x&#8221;<\/em> HTTP response codes and they all deal with content moving in some way. You can read more about 301 on the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Reference\/Status\/301\" target=\"_blank\" rel=\"noopener\">Mozilla Website<\/a>. The Mozilla site also lists the other 3.x.x codes, which you might also see in the wild, given that their implementation is usually up to a developer&#8217;s interpretation and, thus, <em>between them and however their coffee is helping them see the world today.<\/em><\/p>\n<p>The location (target URL) is, of course, the URL that we were always interested in. It is essentially whatever digital cultural artifact we were reading was pointing to.<\/p>\n<p>The source URL is called so (in this blog) because it is what we received and what we extracted from the aforementioned digital cultural artifact.<\/p>\n<p>To ensure we capture everything, we need:<\/p>\n<ul>\n<li>A record of the source URL.<\/li>\n<li>A record of the target URL and its connection to the source URL.<\/li>\n<li>A web archive of the target URL.<\/li>\n<\/ul>\n<p>This helps protect against content disappearing or becoming skewed. It also ensures that if we ever see the short URL in other records, we know what it pointed to, in case one day we can no longer rely on the redirect from the original link shortening domain.<\/p>\n<p><em><strong>In an ideal world!<\/strong> It might also, one day, help other archives cross-reference their short URLs, but I don&#8217;t think many of our archives and preservation systems are set up to enable this&#8230; but I like to dream.<\/em><\/p>\n<h2>Capture in the Internet Archive<\/h2>\n<p>The Internet Archive (IA) has a small flaw here.<\/p>\n<h3>Capture is all in the user-interface<\/h3>\n<p>As you can see by the screenshot below you can capture a shortened link, but there&#8217;s no easy way to preserve this information in a digital preservation system and preserve a functional audit trail.<\/p>\n<p><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3421\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved.png\" alt=\"Screenshot of the Internet Archive showing that a short link was successfully saved. It tells us to visit the site at the original (target) link. At this point it has discarded the short link in favor of that.\" width=\"1093\" height=\"901\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved.png 1093w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved-500x412.png 500w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved-1024x844.png 1024w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/ia_page_saved-768x633.png 768w\" sizes=\"auto, (max-width: 1093px) 100vw, 1093px\" \/><\/a><\/p>\n<h2>Capture using cURL and JC<\/h2>\n<p>You want to capture more information about the original URL &#8212; in this instance both additional metadata and <em>paradata<\/em> (data about the technical processes contributing to a record). While you still need to create an archiving step, you can extract machine-readable information from <a href=\"https:\/\/curl.se\/\" target=\"_blank\" rel=\"noopener\">cURL<\/a> by combining it with the <code>jc<\/code> tool which converts informatiion on the terminal to JSON; you can read more <a href=\"https:\/\/github.com\/kellyjonbrazil\/jc\" target=\"_blank\" rel=\"noopener\">on GitHub<\/a>.<\/p>\n<p>Let&#8217;s look at an example: <code>jc curl -Is bit.ly\/2lfnTqv | jq<\/code><\/p>\n<pre>[\r\n  {\r\n    \"_type\": \"response\",\r\n    \"_response_version\": \"HTTP\/1.1\",\r\n    <strong>\"_response_status\": 301,\r\n    \"_response_reason\": [\r\n      \"Moved Permanently\"\r\n    ],<\/strong>\r\n    \"server\": [\r\n      \"nginx\"\r\n    ],\r\n    \"date\": \"Thu, 02 Jul 2026 18:14:54 GMT\",\r\n    \"content-type\": \"text\/html; charset=utf-8\",\r\n    \"content-length\": 130,\r\n    \"cache-control\": [\r\n      \"private\",\r\n      \"max-age=90\"\r\n    ],\r\n    \"content-security-policy\": [\r\n      \"referrer always;\"\r\n    ],\r\n    <strong>\"location\": \"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n    \"referrer-policy\": \"unsafe-url\",\r\n    \"set-cookie\": [\r\n      \"_bit=q62ieS-627d247d0d017ad442-00V; Domain=bit.ly; Expires=Tue, 29 Dec 2026 18:14:54 GMT\"\r\n    ],\r\n    \"x-robots-tag\": \"noindex\",\r\n    \"via\": [\r\n      \"1.1 google\"\r\n    ],\r\n    \"date_epoch_utc\": 1783016094\r\n  }\r\n]\r\n<\/pre>\n<p>All of the same information is there from our original call to cURL, but via JC it is now machine readable.We can copy this data verbatim into a provenance record or use another tool to cherry-pick the information we need into a record about the web archiving process.<\/p>\n<p>Take this call to cURL, tag on a request to your local web-archiving provider for a memento snapshot, and you&#8217;re good! 8-wire web-archiving in action!<\/p>\n<p>But is there another way?<\/p>\n<h2>HTTPreserve<\/h2>\n<p>I have discussed components of <a href=\"https:\/\/exponentialdecay.co.uk\/blog\/looking-after-your-urls-tikalinkextract-in-2025\/\" target=\"_blank\" rel=\"noopener\">HTTPreserve<\/a> before. HTTPreserve is <a href=\"https:\/\/httpreserve.info\/\" target=\"_blank\" rel=\"noopener\">a service<\/a> and <a href=\"https:\/\/github.com\/httpreserve\" target=\"_blank\" rel=\"noopener\">suite of tools<\/a> I wrote a while back to provide a standard web-archiving export, especially for when links were found in the records already stored in the digital archive and needed to be preserved.<\/p>\n<p>HTTPreserve can check for the existence of an already recorded IA snapshot, but it also has a save function that saves the most up-to-date snapshot as well as returns machine-readable information describing the link&#8217;s status.<\/p>\n<p>E.g. call:<\/p>\n<pre>curl -s https:\/\/httpreserve.info\/save?url=https:\/\/bit.ly\/2lfnTqv<\/pre>\n<p>or access the URL in the browser and you will see something along the lines of:<\/p>\n<pre>{\r\n   \"AnalysisVersionNumber\": \"0.0.20\",\r\n   \"AnalysisVersionText\": \"exponentialdecay-httpreserve\/0.0.20\",\r\n   \"SimpleRequestVersion\": \"httpreserve-simplerequest\/0.0.4\",\r\n   <strong>\"Link\": \"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n   \"Title\": \"\",\r\n   \"ContentType\": \"\",\r\n   \"ResponseCode\": 301,\r\n   \"ResponseText\": \"Moved Permanently\",\r\n   <strong>\"SourceURL\": \"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n   \"ScreenShot\": \"snapshots are not currently enabled\",\r\n   <strong>\"InternetArchiveLinkEarliest\": \"https:\/\/web.archive.org\/web\/20170908143755\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n   \"InternetArchiveEarliestDate\": \"2017-09-08 14:37:55 +0000 UTC\",\r\n   <strong>\"InternetArchiveLinkLatest\": \"https:\/\/web.archive.org\/web\/20260703163229\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n   \"InternetArchiveLatestDate\": \"2026-07-03 16:32:29 +0000 UTC\",\r\n   \"InternetArchiveSaveLink\": \"https:\/\/web.archive.org\/save\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"InternetArchiveResponseCode\": 302,\r\n   \"InternetArchiveResponseText\": \"Found\",\r\n   <strong>\"RobustLinkEarliest\": \"&lt;a href='https:\/\/web.archive.org\/web\/20170908143755\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/' data-originalurl='http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/' data-versiondate='2017-09-08'&gt;HTTPreserve Robust Link - simply replace this text!!&lt;\/a&gt;\",\r\n   \"RobustLinkLatest\": \"&lt;a href='https:\/\/web.archive.org\/web\/20260703163229\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/' data-originalurl='http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/' data-versiondate='2026-07-03'&gt;HTTPreserve Robust Link - simply replace this text!!&lt;\/a&gt;\",<\/strong>\r\n   <strong>\"PWID\": \"urn:pwid:archive.org:2026-07-03T16:32:29Z:page:http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",<\/strong>\r\n   \"Archived\": true,\r\n   \"Error\": false,\r\n   \"ErrorMessage\": \"\",\r\n   \"StatsCreationTime\": \"1.975691615s\"\r\n}\r\n\r\n<\/pre>\n<p>The information returned here includes:<\/p>\n<ul>\n<li><code>Link<\/code> which is where the short URL pointed at, our target URL.<\/li>\n<li>Source URL (<code>SourceURL<\/code>), i.e. the shortened URL.<\/li>\n<li>Web archive latest link (<code>InternetArchiveLinkLatest<\/code>) and earliest link (<code>InternetArchiveLinkEarliest<\/code>).<\/li>\n<li><a href=\"https:\/\/github.com\/iipc\/robustlinks\" target=\"_blank\" rel=\"noopener\">Robust Link<\/a> (<code>RobustLinkLatest<\/code> and <code>RobustLinkEarliest<\/code>)snippets for use in your own HTML.<\/li>\n<li><a href=\"https:\/\/id.kb.dk\/pwid\/index_UK.html\" target=\"_blank\" rel=\"noopener\">Persistent Web Identifier<\/a> (<code>PWID<\/code>) (<a href=\"https:\/\/www.iana.org\/assignments\/urn-formal\/pwid\" target=\"_blank\" rel=\"noopener\">spec<\/a>)<\/li>\n<\/ul>\n<p>HTTPreserve also constructs an IA save link (<code>InternetArchiveSaveLink<\/code>) that you can use yourself:<\/p>\n<pre>https:\/\/web.archive.org\/save\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\r\n<\/pre>\n<p>All of this information could be used to automate archiving workflows and commit information directly to your digital preservation audit trails with additional provenance.<\/p>\n<p><em><strong>NB. <\/strong>Saving via HTTPreserve can time out, and you might just want to see if a short link has been preserved before. Just replace <code>save<\/code> with <code>httpreserve<\/code><\/em>:<\/p>\n<pre>curl -s https:\/\/httpreserve.info\/<strong>httpreserve<\/strong>?url=https:\/\/bit.ly\/2lfnTqv<\/pre>\n<h2>Linkstat<\/h2>\n<p>I wrote <a href=\"https:\/\/github.com\/httpreserve\/linkstat\" target=\"_blank\" rel=\"noopener\">linkstat<\/a> to bring httpreserve to the command line. You can <a href=\"https:\/\/github.com\/httpreserve\/linkstat\/releases\/tag\/0.0.8\" target=\"_blank\" rel=\"noopener\">download linkstat<\/a> and run the following command to save a web resource:<\/p>\n<pre>.\/linkstat -link https:\/\/bit.ly\/2lfnTqv -save<\/pre>\n<p>Or just to view:<\/p>\n<pre>.\/linkstat -link https:\/\/bit.ly\/2lfnTqv<\/pre>\n<p>And the result should look exactly as before:<\/p>\n<pre>{\r\n   \"AnalysisVersionNumber\": \"0.0.21\",\r\n   \"AnalysisVersionText\": \"exponentialdecay-httpreserve\/0.0.21\",\r\n   \"SimpleRequestVersion\": \"httpreserve-simplerequest\/0.0.4\",\r\n   \"Link\": \"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"Title\": \"\",\r\n   \"ContentType\": \"\",\r\n   \"ResponseCode\": 301,\r\n   \"ResponseText\": \"Moved Permanently\",\r\n   \"SourceURL\": \"https:\/\/bit.ly\/2lfnTqv\",\r\n   \"InternetArchiveLinkEarliest\": \"https:\/\/web.archive.org\/web\/20170908143755\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"InternetArchiveEarliestDate\": \"2017-09-08 14:37:55 +0000 UTC\",\r\n   \"InternetArchiveLinkLatest\": \"https:\/\/web.archive.org\/web\/20260703163229\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"InternetArchiveLatestDate\": \"2026-07-03 16:32:29 +0000 UTC\",\r\n   \"InternetArchiveSaveLink\": \"https:\/\/web.archive.org\/save\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"InternetArchiveResponseCode\": 302,\r\n   \"InternetArchiveResponseText\": \"Found\",\r\n   \"RobustLinkEarliest\": \"&lt;a href=\"https:\/\/web.archive.org\/web\/20170908143755\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\" data-originalurl=\"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\" data-versiondate=\"2017-09-08\"&gt;HTTPreserve Robust Link - simply replace this text!!\",\r\n   \"RobustLinkLatest\": \"&lt;a href=\"https:\/\/web.archive.org\/web\/20260703163229\/http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\" data-originalurl=\"http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\" data-versiondate=\"2026-07-03\"&gt;HTTPreserve Robust Link - simply replace this text!!\",\r\n   \"PWID\": \"urn:pwid:archive.org:2026-07-03T16:32:29Z:page:http:\/\/choosestainless.outokumpu.com\/case-barbarastollen-underground-archive\/\",\r\n   \"Archived\": true,\r\n   \"Error\": false,\r\n   \"ErrorMessage\": \"\",\r\n   \"StatsCreationTime\": \"2.89741131s\"\r\n}\r\n\r\n<\/pre>\n<p><em><strong>NB.\u00a0<\/strong>Saving can take time, I&#8217;d recommend first using <code>linkstat -link &lt;your link&gt;<\/code> to see if archived copies already exist, especially for URLs in older collections. Most of the latency is on the IA&#8217;s side because it needs to rate-limit requests, but there might be a way around this with a bit more investment in the linkstat code. We can talk if this is of interest to you.<\/em><\/p>\n<h2>Deliberate at all times<\/h2>\n<p>Give HTTPreserve and linkstat a whirl and let me know how it goes. Even if you don&#8217;t follow up with those, I hope some of the tips in this blog will prove helpful, and you&#8217;re already thinking about how to store more information about your web archives and your digital preservation processes.<\/p>\n<p>What other gaps are you already thinking about in your archives?<\/p>\n<h2>Further reading<\/h2>\n<h3>A good URL shortener?<\/h3>\n<p>I still have it on my backlog to come back to this article, <em>&#8220;Building a Less Terrible URL Shortener&#8221;<\/em> and maybe trying to implement some of its ideas.<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.legoktm.com\/2024\/07\/23\/building-a-less-terrible-url-shortener.html\" target=\"_blank\" rel=\"noopener\">https:\/\/blog.legoktm.com\/2024\/07\/23\/building-a-less-terrible-url-shortener.html<\/a><\/li>\n<\/ul>\n<h3>Binary Trees<\/h3>\n<p>HTTPreserve came out of my work on my Binary Trees paper and describes a number of pragmatic approaches to automatically connecting born digital archives. This blog is yet another example of how we need to connect the information we have, source URL to target URL and persist this information when it is available.<\/p>\n<ul>\n<li><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/binary-trees-automatically-identifying-the-links-between-born-digital-records\/\" target=\"_blank\" rel=\"noopener\">Binary Trees? Automatically Identifying the Links Between Born-digital Records<\/a><\/li>\n<\/ul>\n<h3>HTTPreserve suite<\/h3>\n<p>The HTTPreserve suite of tools is available <a href=\"https:\/\/github.com\/httpreserve\" target=\"_blank\" rel=\"noopener\">on GitHub<\/a>.<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_3419\" class=\"pvc_stats total_only  \" data-element-id=\"3419\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Shortened links are a digital preservation and web archiving nightmare. You can imagine how they need to work:<\/p>\n<ol>\n<li>Create a unique short code for a given (target) URL (like a hash, but far far shorter)<\/li>\n<li>Pair the short code with your URL in a database.<\/li>\n<li>Create a redirect rule on the URL shortening server from the new source URL to the target URL.<\/li>\n<li>Send the shortened link to the caller, e.g. <code>shortURL.com\/123badf00d<\/code><\/li>\n<li><em>In-perpetuity:<\/em> continue to pay for your domain; maintain the database; look after redirect rules during server migrations; ensure duplicate short-codes are not created.<\/li>\n<\/ol>\n<p>A URL-shortening business in five easy steps.<\/p>\n<p>But what does that mean for digital preservation?<\/p>\n<div class=\"link-more\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &ldquo;Shortened links? Expand them and save the URLs&rdquo;<\/span>&hellip;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_3419\" class=\"pvc_stats total_only  \" data-element-id=\"3419\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":3425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[86,114,3,75,507],"tags":[61,96,509,147,103,71,357,511,508,510,494,358,356],"class_list":["post-3419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-archives","category-digital-literacy","category-digital-preservation","category-golang","category-web-archiving","tag-code","tag-coding","tag-curl","tag-digipres","tag-digital-archiving","tag-digital-preservation","tag-httpreserve","tag-httpreserve-linkstat","tag-jc","tag-linkstat","tag-paradata","tag-web-archives","tag-web-archiving","entry"],"a3_pvc":{"activated":true,"total_views":112,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Shortened links? Expand them and save the URLs<\/title>\n<meta name=\"description\" content=\"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shortened links? Expand them and save the URLs\" \/>\n<meta property=\"og:description\" content=\"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/\" \/>\n<meta property=\"og:site_name\" content=\"ross spencer :: exponentialdecay.digipres :: blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-05T22:15:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T10:27:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ross Spencer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:site\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ross Spencer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/\"},\"author\":{\"name\":\"Ross Spencer\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"headline\":\"Shortened links? Expand them and save the URLs\",\"datePublished\":\"2026-07-05T22:15:21+00:00\",\"dateModified\":\"2026-07-07T10:27:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/\"},\"wordCount\":1290,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/meneeley_whitney-scaled.jpeg\",\"keywords\":[\"Code\",\"Coding\",\"cURL\",\"digipres\",\"Digital Archiving\",\"Digital Preservation\",\"httpreserve\",\"httpreserve linkstat\",\"JC\",\"linkstat\",\"Paradata\",\"Web Archives\",\"web-archiving\"],\"articleSection\":[\"Archives\",\"Digital Literacy\",\"Digital Preservation\",\"Golang\",\"Web Archiving\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/\",\"name\":\"Shortened links? Expand them and save the URLs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/meneeley_whitney-scaled.jpeg\",\"datePublished\":\"2026-07-05T22:15:21+00:00\",\"dateModified\":\"2026-07-07T10:27:16+00:00\",\"description\":\"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#primaryimage\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/meneeley_whitney-scaled.jpeg\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/meneeley_whitney-scaled.jpeg\",\"width\":2560,\"height\":2560,\"caption\":\"Photographed at the Whitney Museum in 2018 the image shows a print by artist Edward Meneeley from his series IBM drawings. The image is bright green and shows a component of a computer or maybe printer that is stamped across the page. You can find more information at The Whitney: https:\\\/\\\/whitney.org\\\/collection\\\/works\\\/7225\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/shortened-links-expand-them-and-save-the-urls\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shortened links? Expand them and save the URLs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\",\"name\":\"ross spencer :: exponentialdecay.digipres :: blog\",\"description\":\"Digital preservation analyst, researcher, and software developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\",\"name\":\"Ross Spencer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"width\":2560,\"height\":2560,\"caption\":\"Ross Spencer\"},\"logo\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\"},\"description\":\"Digital preservation domain expert and full-stack software developer.\",\"sameAs\":[\"http:\\\/\\\/www.exponentialdecay.co.uk\\\/blog\",\"https:\\\/\\\/www.instagram.com\\\/b33tk33p3r\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ross-spencer-b6b9b758\\\/\",\"https:\\\/\\\/x.com\\\/beet_keeper\"],\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/author\\\/exponentialdecay\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Shortened links? Expand them and save the URLs","description":"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/","og_locale":"en_US","og_type":"article","og_title":"Shortened links? Expand them and save the URLs","og_description":"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.","og_url":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/","og_site_name":"ross spencer :: exponentialdecay.digipres :: blog","article_published_time":"2026-07-05T22:15:21+00:00","article_modified_time":"2026-07-07T10:27:16+00:00","og_image":[{"width":2560,"height":2560,"url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg","type":"image\/jpeg"}],"author":"Ross Spencer","twitter_card":"summary_large_image","twitter_creator":"@beet_keeper","twitter_site":"@beet_keeper","twitter_misc":{"Written by":"Ross Spencer","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#article","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/"},"author":{"name":"Ross Spencer","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"headline":"Shortened links? Expand them and save the URLs","datePublished":"2026-07-05T22:15:21+00:00","dateModified":"2026-07-07T10:27:16+00:00","mainEntityOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/"},"wordCount":1290,"commentCount":5,"publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg","keywords":["Code","Coding","cURL","digipres","Digital Archiving","Digital Preservation","httpreserve","httpreserve linkstat","JC","linkstat","Paradata","Web Archives","web-archiving"],"articleSection":["Archives","Digital Literacy","Digital Preservation","Golang","Web Archiving"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/","url":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/","name":"Shortened links? Expand them and save the URLs","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#primaryimage"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg","datePublished":"2026-07-05T22:15:21+00:00","dateModified":"2026-07-07T10:27:16+00:00","description":"Looking at the metadata you need to extract in your processed when working with hyperlinks from URL shorteners.","breadcrumb":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#primaryimage","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2026\/07\/meneeley_whitney-scaled.jpeg","width":2560,"height":2560,"caption":"Photographed at the Whitney Museum in 2018 the image shows a print by artist Edward Meneeley from his series IBM drawings. The image is bright green and shows a component of a computer or maybe printer that is stamped across the page. You can find more information at The Whitney: https:\/\/whitney.org\/collection\/works\/7225"},{"@type":"BreadcrumbList","@id":"https:\/\/exponentialdecay.co.uk\/blog\/shortened-links-expand-them-and-save-the-urls\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/exponentialdecay.co.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Shortened links? Expand them and save the URLs"}]},{"@type":"WebSite","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website","url":"https:\/\/exponentialdecay.co.uk\/blog\/","name":"ross spencer :: exponentialdecay.digipres :: blog","description":"Digital preservation analyst, researcher, and software developer","publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exponentialdecay.co.uk\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716","name":"Ross Spencer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","width":2560,"height":2560,"caption":"Ross Spencer"},"logo":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png"},"description":"Digital preservation domain expert and full-stack software developer.","sameAs":["http:\/\/www.exponentialdecay.co.uk\/blog","https:\/\/www.instagram.com\/b33tk33p3r\/","https:\/\/www.linkedin.com\/in\/ross-spencer-b6b9b758\/","https:\/\/x.com\/beet_keeper"],"url":"https:\/\/exponentialdecay.co.uk\/blog\/author\/exponentialdecay\/"}]}},"views":3293,"_links":{"self":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/3419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=3419"}],"version-history":[{"count":9,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/3419\/revisions"}],"predecessor-version":[{"id":3455,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/3419\/revisions\/3455"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media\/3425"}],"wp:attachment":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=3419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=3419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=3419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}