PageSourceSearch

https://www.doi.org/

html doi.org collected 2026-09-24 03:10:55 UTC 24,206 bytes, 685 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-us">
3<head>
4	<meta name="generator" content="Hugo 0.165.0">
5	
6	<meta charset="UTF-8">
7	<meta name="viewport" content="width=device-width, initial-scale=1">
8	<meta http-equiv="X-UA-Compatible" content="IE=edge">
9	
10	<meta name="ahrefs-site-verification" content="a4d19d13d080685e48094a2591188be35d7b5db05918a5eb84828500a14f3c5e">
11	
12	<title>Home Page</title>
13	
14	
15
16	<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" 
17		  rel="stylesheet" 
18		  integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" 
19		  crossorigin="anonymous">
20	
20<script 
21		  src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" 
22		  integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" 
23	      crossorigin="anonymous">
24	</script>
24
25
26	
26<script src="/js/jquery-3.6.1.min.js"></script>
26
27	
28	
29	<link rel="stylesheet" href="/css/fontawesome-free-6.7.2-web/css/fontawesome.min.css">
30	<link rel="stylesheet" href="/css/fontawesome-free-6.7.2-web/css/solid.min.css">
31	<link rel="stylesheet" href="/css/fontawesome-free-6.7.2-web/css/brands.min.css">
32	
33
34
35	
36		
37		
38			
39				
40					<link rel="stylesheet" href="/css/style.da46f5c0a75190665f6ea00bbd3af2f75e8ac8b48951528e0e8d5c04c13944fd.css?v=sha256-2kb1wKdRkGZfbqALvTry916KyLSJUVKODo1cBME5RP0%3d" integrity="sha256-2kb1wKdRkGZfbqALvTry916KyLSJUVKODo1cBME5RP0=" crossorigin="anonymous">
41				
42			
43		
44	
45
46
47	<link rel="alternate" type="application/rss+xml" href="/index.xml" title="DOI Foundation WIP site">
48
49	<link rel="icon" sizes="48x48" href="/images/favicons/favicon.ico">
50	<link rel="icon" sizes="32x32" href="/images/favicons/favicon-32x32.png">
51	<link rel="icon" sizes="16x16" href="/images/favicons/favicon-16x16.png">
52	<link rel="apple-touch-icon-precomposed" href="/images/favicons/apple-touch-icon.png">
53	<link rel="apple-touch-icon-precomposed" sizes="192x192" href="/images/favicons/android-chrome-192x192.png">
54	<link rel="apple-touch-icon-precomposed" sizes="512x512" href="/images/favicons/android-chrome-512x512.png">
55    
56</head>
57<body>
58	<header>
59	 
60	
61	
62
63
64
65<section class="home-banner col text-center">
66    <p>
67        <strong>WARNING:</strong> Fake DOI schemes
68
69        
70            <a href="/more-info">Learn more</a> <i class="fa-solid fa-arrow-right-long hover-move-right"></i>
71        
72    </p>
73</section>
74
75
76
77
78	
79	
80
81	<div class="row">
82		<div class="col logo">			
83			<a href="https://www.doi.org/"><img class="header-logo" src="/images/logos/
84header_logo_cropped_registered.svg" /></a>			
85		</div>
86	</div>
87	
88	<div class="navigation-container">
89		<div class="nav">
90			<nav>
91				<input type="checkbox" name="" id="">
92				<div class="hamburger-lines">
93					<span class="line line1"></span>
94					<span class="line line2"></span>
95					<span class="line line3"></span>
96				</div>
97				<ul class="menu-items">
98					
99										
100
101							<li>
102								
103								<span class='nolink'>The Foundation</span>
104								<i class="fa-solid fa-fw fa-angle-down"></i>
105								
106    							
107									<ul class="submenu">
108										
109											<li><a href="/the-foundation/about-us/">About Us</a>
110										
111											<li><a href="/the-foundation/board-and-governance/">Board &amp; Governance</a>
112										
113											<li><a href="/the-foundation/sustainability/">Sustainability</a>
114										
115									</ul>
116								
117							</li>
118										
119
120							<li>
121								
122								<span class='nolink'>The Community</span>
123								<i class="fa-solid fa-fw fa-angle-down"></i>
124								
125    							
126									<ul class="submenu">
127										
128											<li><a href="/the-community/what-are-registration-agencies/">What are Registration Agencies?</a>
129										
130											<li><a href="/the-community/existing-registration-agencies/">Existing Registration Agencies</a>
131										
132											<li><a href="/the-community/who-are-the-members-and-users/">Who Are The Members and Users?</a>
133										
134									</ul>
135								
136							</li>
137										
138
139							<li>
140								
141								<span class='nolink'>The Identifier</span>
142								<i class="fa-solid fa-fw fa-angle-down"></i>
143								
144    							
145									<ul class="submenu">
146										
147											<li><a href="/the-identifier/what-is-a-doi/">What is a DOI?</a>
148										
149											<li><a href="/the-identifier/resources/handbook/">DOI Handbook</a>
150										
151											<li><a href="/the-identifier/resources/">Resources</a>
152										
153									</ul>
154								
155							</li>
156						
157					
158				</ul>
159
160				
161			</nav>
162		</div>
163	</div>
164</header>
165
166	
167    <main aria-role="main">
168      <header class="homepage-header">
169      </header>
170      <div class="homepage-content">
171        
172        
173<section class="home-top">
174    <div class="background" style="background-image:url(/images/[email protected])"></div>
175    <div class="row">
176        <div class="col left">
177            <div class="maintext">The DOI Foundation is a not-for-profit organization. We govern the Digital Object Identifier (DOI) system on behalf of the agencies who manage DOI registries and provide services to their respective communities. We are the registration authority for the ISO standard (ISO 26324) for the DOI system and we are governed by our Registration Agencies.</div>
178            <div class="subtext">Read more about us, our operations and our community of communities from construction to entertainment to scholarly research.</div>
179
180            <div class='link'>
181                <a href="/the-foundation/about-us/">learn more</a>
182                <i class="fa-solid fa-fw fa-arrow-right-long"></i>
183            </div>
184        </div>
185        <div class="col right">
186            
187        </div>
188
189    </div>
190</section>
191
192        <section class="home-infos">
193    
194    <div class="row">
195
196    
197        <div class="col" >
198            <div class='icon'><img src="/images/globe.svg"/></div>
199            <h2 class="title">WHO IS THE DOI FOUNDATION COMMUNITY?</h2>
200            <div class="maintext"><p>We are an international community of communities bound by a common interest in persistent infrastru
200cture. So far, we have welcomed agencies that manage communities spanning entertainment, standards, the built environment, natural history collections, scholarly communications, and research data.</p>
201<p>Read more about our Registration Agencies and what they offer</p>
202</div>
203
204            <div class='link'>
205                <a href="/the-community/what-are-registration-agencies/">learn more</a>
206                <i class="fa-solid fa-fw fa-arrow-right-long"></i>
207            </div>
208        </div>
209    
210        <div class="col" >
211            <div class='icon'><img src="/images/target.svg"/></div>
212            <h2 class="title">WHAT IS THE DIGITAL OBJECT IDENTIFIER (DOI)?</h2>
213            <div class="maintext"><p>A DOI name is a digital identifier of an object, any object — physical, digital, or abstract. DOIs solve a common problem: keeping track of things. Things can be matter, material, content, or activities.</p>
214<p>Designed to be used by humans as well as machines, DOIs identify objects persistently. They allow things to be uniquely identified and accessed reliably. You know what you have, where it is, and others can track it too.</p>
215<p>Read more about the identifier, its benefits, and how it’s used</p>
216</div>
217
218            <div class='link'>
219                <a href="/the-identifier/what-is-a-doi/">learn more</a>
220                <i class="fa-solid fa-fw fa-arrow-right-long"></i>
221            </div>
222        </div>
223    
224    
225</section>
226        
227<section class='home-announcement'>
228    <div class="row">
229        <div class="col left">
230            <div class="wrapper photo">
231                <img src="/images/board/jclark.jpg" />
232            </div>
233        </div>
234        <div class="col right">
235            <h2 class="title">Jonathan Clark</h2>
236            <div class="maintext">
237                <p>It is with great sadness that we share that Jonathan Clark died suddenly on August 11, 2026. Jonathan had been the Managing Agent of the DOI Foundation since 2015. Over those years, he guided the DOI Foundation with a steady hand and was a generous colleague to many across our community.
238<br>
239<br>
240Our thoughts are with his family, friends, and the many individuals and organizations he worked alongside. We will share a fuller tribute to Jonathan soon.
241<br>
242<br>
243The DOI system and services continue to operate normally under the direction of the DOI Foundation Board.</p>
244            </div>
245
246            
247        </div>
248
249    </div>
250</section>
251
252
253        
254          <section class="how-many">
255    <div class="row titlerow">
256        <h2 class="title">How many are being resolved?</h2>
257    </div>
258    <div class="row numbers">
259        <div class="col">
260            <span id='resolutions_clock_count' class='bignumber'></span>
261            <span class='subtext'>Total DOI resolutions to date (all time)</span>          
262            <p class='footnote'>The total DOI resolutions to date is calculated using actual number of DOI resolutions recorded up until yesterday and the average resolution rate recorded over the past 24 hours (currently this is <span id='resolutions_clock_rate' class='smallnumber'></span>)</p>
263        </div>
264    </div>    
265    <div class="row numbers">
266        <div class="col">
267            <span id='uptime_percent' class='bignumber'></span>
268            <span class='subtext'>Uptime over the last 90 days</span>          
269            <p class='footnote'><span id='resolutions_clock_rate' class='smallnumber'></span></p>
270        </div>
271    </div>
272    <div id="el"></div>
273</section>
274
275        
276
277        
278<section class="home-resolve" style="background-image:url(/images/dot-pattern.svg);">
279    <div class="row">
280        <div class="col left">
281            <h2 class="title">Try resolving a DOI name</h2>
282            <div class="maintext">Type or paste a known DOI name exactly—including its prefix and suffix—into the text box below and then &lsquo;submit&rsquo; to resolve it.</div>
283            <div class="form">
284                <form method="post" action="https://doi.org" id="resolveID" accept-charset="utf-8">
285
286                   
287                    <input class='input-content' type="text" name="hdl" id="nameID" placeholder="10.nnnnnn/example">
288                    <input class='submit' type="submit" alt="Resolve your DOI" align="middle">
289                    
290                    </form>
291            </div>
292            <div class='subtext'>DOIs include a prefix (prefixes always start with <code>10.</code>) and a suffix, separated by a forward slash (<code>/</code>). Prefacing the DOI with <code>doi.org/</code> will turn it into an actionable link, for example, <a href="https://doi.org/10.5334/dsj-2017-040">https://doi.org/10.5334/dsj-2017-040</a>. Clicking that link will &lsquo;resolve&rsquo; it, i.e. redirect to the latest information about the object it identifies, even if the object changes or moves.</div>
293        </div>
294        <div class="col right">
295        </div>
296
297    </div>
298</section>
299
300        <div class="sticky-socials">
301    <ul class="socials-side">
302        				
303            <li><a href="https://www.linkedin.com/company/doi-foundation-inc/"><i class='fa-brands fa-fw fa-linkedin'></i></a></li>
304        				
305            <li><a href="mailto:[email protected]"><i class='fa-solid fa-fw fa-envelope'></i></a></li>
306        
307    </ul>
308</div>
309
310        
311      </div>
312    </main>
313    
314    
314<script>
315
316    const STATS_REFRESH_INTERVAL = 1000 * 60 * 60; 
317    const RESOLUTIONS_CLOCK_UPDATE_INTERVAL = 500; 
318
319    let resolutionsClockIntervalId = null;
320
321    let doiResolutions = null;
322    let counts = null;
323    let mapMode = "logScale";
324
325
326
327    async function getDoiValueAsJson(doi, type) {
328        let url = 'https://doi.org/api/handles/' + doi + '?type=' + type + "&auth";
329        const response = await fetch(url);
330        let handleRecord = await response.json();
331        let handleValue = handleRecord.values[0];
332        let valueJson = handleValue.data.value;
333        let result = JSON.parse(valueJson);
334        console.log("Fetching stats for " + type);
335        return result;
336    }
337
338    async function fetchStats() {
339        doiResolutions = await getDoiValueAsJson('10.1000/1000', 'DOI_RESOLUTIONS');    
340        
341        if (document.getElementById('doi-resolutions')) {
342          counts = await getDoiValueAsJson('10.1000/1000', 'DOI_COUNTS');
343        } else {
344          counts = null;
345        }
346        
347        
348        console.log("Stats loaded");
349        renderResults(doiResolutions,counts);
350        setTimeout(fetchStats, STATS_REFRESH_INTERVAL);
351    }
352    fetchStats();
353  
354    function renderResults(doiResolutions,counts) {
355        renderResolutionsClock(doiResolutions);        
356        renderResolutionsUptime(doiResolutions);
357
358        
359        if (document.getElementById('doi-resolutions')) {
360          
361          renderResolutionsBotPercent(doiResolutions);
362          renderResolutionsConnegPercent(doiResolutions);
363
364          
365          google.charts.load('52', { 'packages': ['corechart', 'geochart'] });
366
367          try{
368            google.charts.setOnLoadCallback(function() {renderResolutionsChart(doiResolutions)}); 
369            google.charts.setOnLoadCallback(function() {renderTotalHandlesChart(counts)}); 
370            google.charts.setOnLoadCallback(function() {renderResolutionsMap(doiResolutions)}); 
371          } catch(err) {
372            console.log(err);
373          }
374        }
375    }
376
377    function renderResolutionsUptime(doiResolutions) {
378      try {
379        let uptimeElement = document.getElementById('uptime_percent');
380        let uptimePercent = doiResolutions.uptime.uptimePercentage;
381        let uptimeText =  uptimePercent + "%";
382        uptimeElement.textContent = uptimeText;
383      } catch {
384
385      }
386    }
387
388    function renderResolutionsMap(doiResolutions) {
389      try {
390        let mode = mapMode;
391        let resolutionsByCountry = convertResolutionsByCountryForGoogleMap(doiResolutions.resolutionsByCountryLastMonth, mode);
392        var data = google.visualization.arrayToDataTable(resolutionsByCountry);
393        var options = {
394            backgroundColor: 'transparent',
395            colorAxis: {colors: ['white', '#5C7392']},
396            legend: 'none'
397        };
398        var chart = new google.visualization.GeoChart(document.getElementById('world_map'));
399        chart.draw(data, options);
400      } catch {
401        
402      }
403    }
404    function convertResolutionsByCountryForGoogleMap(resolutionsByCountry, mode) {
405      let result = [];
406      let columns = ['Country', 'Resolutions'];
407      result.push(columns);
408      let count = 0;
409      for (let country of resolutionsByCountry) {
410          let code = country.countryCode;
411          let rawValue = parseInt(country.resolutions);
412          let formattedValue = "" + rawValue;
413          let value = Math.log(rawValue);
414          let item = {
415              v: value,
416              f: formattedValue
417          };
418          let row = [code, item];
419          result.push(row);
420          count++;
421      }
422      return result;
423    }
424
425    function renderResolutionsClock(doiResolutions) {
426        let resolutionsTotalAndRate = doiResolutions.resolutionsTotalAndRate;
427        let clockElement = document.getElementById('resolutions_clock_count');
428        let rateElement = document.getElementById('resolutions_clock_rate');
429
430        
431        let ratePerSecond = resolutionsTotalAndRate.resolutionsPerSecondLast24Hours;
432        let incrementPerMs = ratePerSecond / 1000;
433        rateElement.textContent = ratePerSecond + "/second"
434
435        let start = new Date(resolutionsTotalAndRate.asOfTimestamp);
436        let currentCount = calculateResolutionsClock(start, incrementPerMs, resolutionsTotalAndRate.allTime);
437        clockElement.textContent = getClockText(currentCount);
438        clearInterval(resolutionsClockIntervalId);
439        resolutionsClockIntervalId = setInterval(function() {
440            let currentCount = calculateResolutionsClock(start, incrementPerMs, resolutionsTotalAndRate.allTime);
441            let clockText = getClockText(currentCount);
442            clockElement.textContent = clockText;
443        }, RESOLUTIONS_CLOCK_UPDATE_INTERVAL);
444    }
445
446    function calculateResolutionsClock(start, incrementPerMs, initialCount) {
447        let timeSinceStartMs = Date.now() - start;
448        let increment = Math.round(incrementPerMs * timeSinceStartMs);
449        let currentCount = initialCount + increment;
450        return currentCount;
451    }
452
453    function getClockText(count) {
454        let clockText = count.toLocaleString("en-US");
455        return clockText;
456    }  
457
458    function renderTotalHandlesChart(counts) {
459      let totalDois = convertTotalDoisDataForGoogleCharts(counts);
460      var data = google.visualization.arrayToDataTable(totalDois);
461      var options = {
462          chartArea: {'height': '80%'},
463          backgroundColor: 'transparent', 
464          responsive: true,        
465          height:600,
466          colors: ['#5C7392'],
467          title: 'Total DOIs',
468          legend: { position: 'bottom' },
469          trendlines: {
470              0: {
471                  type: 'exponential',
472                  color: '#FAB70C',
473                  tooltip: false
474              }
475          }
476      };
477      
478      var chart = new google.visualization.LineChart(document.getElementById('total-dois'));
479      chart.draw(data, options);
480    }
481    function convertTotalDoisDataForGoogleCharts(monthlyCounts) {
482        let result = [];
483        let columns = [{ label: "Date", type: "date" }, { label: "Total DOIs", type: "number" }];
484        result.push(columns);
485        for (let month in monthlyCounts) {
486            let value = monthlyCounts[month].doiCount;
487            let row = [new Date(month), value];
488            result.push(row);
489        }
490        return result;
491    }
492
493    function renderResolutionsChart(doiResolutions) {
494        let monthlyResolutions = doiResolutions.monthlyResolutions;
495
496        monthLabels = [];
497        resolutions = [];
498        both = [];
499        
500        var data = new google.visualization.DataTable();
501        data.addColumn('date', 'date');
502        data.addColumn('number', 'resolutions');
503
504        for (var key in monthlyResolutions) {
505          if (!monthlyResolutions[key].isIncompleteMonth) {
506            if(key.substr(5)=='01') {
507              monthLabels.push(key.substr(0,4));
508            } else {
509              monthLabels.push("");
510            }
511            
512            resolutions.push(monthlyResolutions[key].resolutions) 
513            both.push([key, monthlyResolutions[key].resolutions ]) ; 
514            
515            
516            datestring = key + "-01";
517            var dateobj = getLastDayOfMonth(datestring);
518            data.addRow([dateobj, monthlyResolutions[key].resolutions ]);
519                      
520          }
521        }
522        
523        
524        
525          
526        
527        var options = {
528          hAxis: {
529            format: 'Y',
530            slantedText:true,
531            slantedTextAngle:45
532          },
533          chartArea: {'height': '80%'},
534          fontName:'futura-pt',
535          colors: ['#5C7392'],
536          title:'DOI Resolutions', 
537          responsive: true,        
538          height:600,
539          timeline: {
540            groupByRowLabel: true
541          },
542          legend: { position: 'bottom'},
543          trendlines : { 
544            0: 
545              {
546                type: 'polynomial',
547                degree: 3,
548                color: '#FAB70C',
549                tooltip: false
550              }
551          }	
552        };
553
554        
555        var chart = new google.visualization.LineChart(document.getElementById('doi-resolutions'));
556        chart.draw(data, options);
557
558        return;
559    }
560
561    function getLastDayOfMonth(monthString) {
562        const [year, month] = monthString.split('-').map(Number);
563        const lastDay = new Date(year, month, 0);
564        return lastDay;
565    }
566
567    function renderResolutionsBotPercent(doiResolutions) {
568      try {
569        let botPercentElement = document.getElementById('bot_percent');
570        let botPercentTextElement = document.getElementById('bot_percent_text');
571        let botPercent = doiResolutions.botPercent.botPercent;
572        let month = reformatMonth(doiResolutions.botPercent.month);
573        let botPercentContent =  botPercent + "%";
574        let botPercentTextContent = replaceWildCards(botPercentTextElement.textContent, "**MONTH**", month);
575        botPercentElement.textContent = botPercentContent;
576        botPercentTextElement.textContent = botPercentTextContent;
577        botPercentTextElement.style.opacity=1;
578      } catch {
579
580      }
581    }    
582
583    function replaceWildCards(theString, find, replace) {
584      return theString.replace(find, replace);
585    }
586
587    function reformatMonth(monthYear) {
588      const months = [
589        'January',
590        'February',
591        'March',
592        'April',
593        'May',
594        'June',
595        'July',
596        'August',
597        'September',
598        'October',
599        'November',
600        'December'
601      ]
602      let d = new Date(monthYear);
603      let year = d.getFullYear();
604      let monthName = months[d.getUTCMonth()];
605      return monthName + " " + year;
606    }
607
608    function renderResolutionsConnegPercent(doiResolutions) {
609      try {
610        let connegPercentElement = document.getElementById('content_negotiation_percent');
611        let connegPercentTextElement = document.getElementById('content_negotiation_text');
612
613        let connegPercent = doiResolutions.connegPercent.connegPercent;
614        let month = reformatMonth(doiResolutions.connegPercent.month);
615        let connegPercentContent =  connegPercent + "%";
616        let connegPercentTextContent = replaceWildCards(connegPercentTextElement.textContent,"**MONTH**", month);
617        connegPercentElement.textContent = connegPercentContent;
618        connegPercentTextElement.textContent = connegPercentTextContent;
619        connegPercentTextElement.style.opacity=1;
620      } catch {
621
622      }
623    }
624
625  </script>
625
626
627    
628
629	
630
631<footer>
632	<div class="row">
633		<div class="col">
634			<a href="https://www.doi.org/"><img class='footer-logo' src="/images/logos/
635footer_logo_cropped_registered.svg" /></a>
636		</div>
637		<div class="col">
638			<ul>
639			
640				<li><a href="/the-identifier/resources/">Resources</a></li>
641			
642				<li><a href="/the-foundation/board-and-governance/">Governing Board</a></li>
643			
644				<li><a href="https://doi.statuspage.io/">Status page</a></li>
645			
646				<li><a href="mailto:[email protected]">Email us</a></li>
647			
648			</ul>
649		</div>
650		<div class="col">
651			<ul>
652							
653				<li><a href="/the-identifier/resources/handbook">The DOI Handbook</a></li>
654							
655				<li><a href="https://www.iso.org/standard/81599.html">ISO 26324</a></li>
656							
657				<li><a href="/privacy-policy/">Privacy Policy</a></li>
658							
659				<li><a href="/resources/130718-trademark-policy.pdf">Trademarks (PDF)</a></li>
660			
661			</ul>
662		</div>
663	</div>
664	<div class="row">
665		<div class="col copyright">
666			
667				<p>Copyright © 2026 DOI Foundation. <i class='fa-brands fa-fw fa-creative-commons'></i><i class='fa-brands fa-fw fa-creative-commons-by'></i> The content of this site is licensed under a <a href='https://creativecommons.org/licenses/by/4.0/' title='Creative Commons' target='_blank'>Creative Commons Attribution 4.0 International License</a>.</p><p>DOI&reg;, DOI.ORG&reg;, and shortDOI&reg; are trademarks of the DOI Foundation.</p>
668			  
669		</div>
670		<div class="col socials">
671			<ul class="socials-footer">
672    				
673        <li><a href="https://www.linkedin.com/company/doi-foundation-inc/"><i class='fa-brands fa-fw fa-linkedin'></i></a></li>
674    				
675        <li><a href="mailto:[email protected]"><i class='fa-solid fa-fw fa-envelope'></i></a></li>
676    
677</ul>
678		</div>
679	</div>
680</footer>
681
682<script src="/js/script.js"></script>
682
683
684</body>
685</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.