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 & 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 ‘submit’ 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 ‘resolve’ 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®, DOI.ORG®, and shortDOI® 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.