1<!DOCTYPE html> 2<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 3<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 4<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> 5<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 6 <head> 7
7<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2036403888955939" 8 crossorigin="anonymous"></script>
8 9 <meta charset="utf-8" /> 10 <title>IPv6 test - IPv6 vs. IPv4 latency test</title> 11 <meta name="description" content="On this page you can test the ping latency of your internet connection, and compare the performance of your IPv4 and IPv6 connectivity." /> 12 <meta name="viewport" content="width=device-width" /> 13 <link rel="stylesheet" href="/css/bootstrap.min.css" /> 14 <style> 15 body { 16 padding-top: 50px; 17 padding-bottom: 20px; 18 } 19 </style> 20 <link rel="stylesheet" href="/css/bootstrap-theme.min.css" /> 21 <link rel="stylesheet" href="/css/main.css" /> 22
22<script src="/js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
22 23
23<script type="text/javascript"> 24 25 var _gaq = _gaq || []; 26 _gaq.push(['_setAccount', 'UA-15976696-1']); 27 _gaq.push(['_setDomainName', 'ipv6-test.com']); 28 _gaq.push(['_trackPageview']); 29 30 (function() { 31 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 32 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 33 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 34 })(); 35 36 </script>
36 37 </head> 38 <body> 39 <!--[if lt IE 7]> 40 <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p> 41 <![endif]--> 42 <div class="navbar navbar-default navbar-fixed-top"> 43 <div class="container"> 44 <div class="navbar-header"> 45 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 46 <span class="icon-bar"></span> 47 <span class="icon-bar"></span> 48 <span class="icon-bar"></span> 49 </button> 50 <a class="navbar-brand" style="position:relative;top:-13px" href="//ipv6-test.com"><img src="/img/logo.png" alt="logo" /></a> 51 </div> 52 <div class="navbar-collapse collapse"> 53 <ul class="nav navbar-nav"> 54<li class='internal'><a href='//ipv6-test.com/' title='General'>General</a></li><li class='internal'><a href='//ipv6-test.com/speedtest/' title='Speed'>Speed</a></li><li class='active internal'><a href='//ipv6-test.com/pingtest/' title='Ping'>Ping</a></li><li class='internal'><a href='//ipv6-test.com/validate.php' title='Website'>Website</a></li><li class='internal'><a href='//ipv6-test.com/stats/' title='Stats'>Stats</a></li><li class='internal'><a href='//ipv6-test.com/api/' title='API'>API</a></li> </ul> 55 </div><!--/.navbar-collapse --> 56 </div> 57 </div> 58 59<div id='error_box' style='display:none'> 60</div> 61
62<script> 63function show_error(s) { 64 $("#error_box").html("<span style='font-weight:bold;'>ERROR</span><br />" + s).slideDown().click(function() {}); 65} 66 67function show_warning(s) { 68 $("#error_box").html("<span style='font-weight:bold;'>WARNING</span><br />" + s).slideDown().click(function() { $(this).fadeOut(); }); 69} 70</script>
70 71 72<div class='container'> 73 <br /> 74<noscript> 75<div class='addr_box'> 76<div class='addr_small'>Your are using <span class='v4'>IPv4</span> to browse this site.</div><div class='addr_body'>104.234.32.2</div><div class='addr_small'>104.234.32.2</div></div><h3>No Javascript :(</h3> 77<p> 78Your browser does not appear to have <i>Javascript</i> support enabled. Without it IPv6-test.com cannot test the latency of your internet connection. 79</p> 80</noscript> 81<div id='hide_noscript' style='display:none'> 82 <div id='speedtest_loading'> 83 <h4>finding the best test server for your location</h4> 84 <div class="progress progress-striped active"> 85 <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:100%"></div> 86 </div> 87 </div> 88 <div id='speedtest_ready' style='display:none'> 89 <h4>Please select a test server</h4> 90 <div class="row"> 91 <div id='speedtest_servers_container' class="col-lg-4 col-md-4 col-sm-5"> 92 <div id='speedtest_servers'> 93 <div class="form-group"> 94 <div class="clearfix"></div> 95 <div class="btn-group"> 96 <button id="server_select" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> 97 <span id="server_name"></span> <span class="caret"></span> 98 </button> 99 <ul id='servers_list' class="dropdown-menu" role="menu"> 100 </ul> 101 </div> 102 </div> 103 </div> 104 <p style="font-size:0.6em"> 105 Do you want to help us by running a test server in your area ?<br />If you think you can, please <a href='/contact.php'>contact us</a> ! 106 </p> 107 </div> 108 <div id='speedtest_server_info' class="col-lg-8 col-md-8 col-sm-7"> 109 </div> 110 </div> 111 </div> 112 113 <h3>IPv4 Ping</h3> 114 <div id='box_pingtest_v4' class='row box_pingtest' style='display:none'> 115 <div id='graph_v4' class='ping_graph col-lg-9 col-md-8 col-sm-7'> 116 </div> 117 <div id='stats_v4' class='col-lg-3 col-md-4 col-sm-5'> 118 <h6>IPv4 address</h6> 119 <span id='value_addr_v4' class='h4'>-</span> 120 <h6>Ping latency <a href='//en.wikipedia.org/wiki/Round-trip_delay_time' target='_blank'><span class="glyphicon glyphicon-question-sign"></span></a></h6> 121 <span id='value_rtt_v4' class='h4'>-</span> 122 <h6>Time to live <a href='//en.wikipedia.org/wiki/Time_to_live' target='_blank'><span class="glyphicon glyphicon-question-sign"></span></a></h6> 123 <span id='value_ttl_v4' class='h4'>-</span> 124 <h6>Average packet loss</h6> 125 <span id='value_loss_v4' class='h4'>-</span> 126 </div> 127 </div> 128 129 <h3>IPv6 Ping</h3> 130 <div id='box_pingtest_v6' class='row box_pingtest' style='display:none'> 131 <div id='graph_v6' class='ping_graph col-lg-9 col-md-8 col-sm-7'> 132 </div> 133 <div id='stats_v6' class='col-lg-3 col-md-4 col-sm-5'> 134 <h6>IPv6 address</h6> 135 <span id='value_addr_v6' class='h5'>-</span> 136 <h6>Ping latency <a href='//en.wikipedia.org/wiki/Round-trip_delay_time' target='_blank'><span class="glyphicon glyphicon-question-sign"></span></a></h6> 137 <span id='value_rtt_v6' class='h4'>-</span> 138 <h6>Hop limit</h6> 139 <span id='value_ttl_v6' class='h4'>-</span> 140 <h6>Average packet loss</h6> 141 <span id='value_loss_v6' class='h4'>-</span> 142 </div> 143 </div> 144</div> 145
146<script src="https://cdn.db-ip.com/js/dbip.js" 147 data-api-key="p03638dffec62e889fee4b3c0b2b9239fd457731"> 148</script>
148 149
150<script> 151 152var servers; 153var server_id; 154var server_display_name; 155var server_location; 156var server_country; 157var server_country_code; 158var server_host_name; 159var server_host_url; 160var server_json_speedtest_v4; 161var server_json_speedtest_v6; 162var server_distance; 163var servers_https_only; 164 165var ldata_v4 = []; 166var ldata_v6 = []; 167var edata_v4 = []; 168var edata_v6 = []; 169 170var edata_v4_100 = []; 171var edata_v6_100 = []; 172 173var pending = 0; 174var pending_v4 = false; 175var pending_v6 = false; 176 177var v4data; 178var v6data; 179 180function get_server(id) { 181 for (i in servers) { 182 if (servers[i].id == id) { 183 return servers[i]; 184 } 185 } 186 show_error("test server not found"); 187} 188 189function fill_servers_combo() { 190 var i; 191 var s = ""; 192 for (i in servers) { 193 s += "<li><a href='#' data-server='" + servers[i].id + "'><img src='/img/flags/" + servers[i].country_code + ".png' style='height:1em;position:relative;left:-0.75em' />" + servers[i].display_name + "</a></li>"; 194 if (servers[i].nearest) { 195 set_server_id(servers[i].id); 196 } 197 } 198 if (servers_https_only) { 199 s += "<li class='divider'></li>"; 200 s += "<li><a href='http://ipv6-test.com/pingtest/'>Switch to HTTP for more locations</a></li>"; 201 } 202 $("#servers_list").html(s); 203 $("#servers_list a").click(function(ev) { 204 set_server_id($(this).attr("data-server")); 205 update_server_info(); 206 ev.preventDefault(); 207 }); 208} 209 210function update_server_info() { 211 var s = ""; 212 if (server_display_comment) { 213 s += "<div class='server_display_comment'>" + server_display_comment + "</div>"; 214 } 215 s += "<img src='/img/flags/" + server_country_code + ".png' /> " + server_location + ", <a href='" + server_host_url + "' target='_blank'>" + server_host_name + "</a>" + " <span class='distance'>(~ <span class='distance_value'>" + server_distance + "</span> km)</span><br /><br />"; 216 $("#speedtest_server_info").html(s); 217} 218 219function set_server_id(id) { 220 var srv = get_server(id); 221 server_id = srv.id; 222 server_display_name = srv.display_name; 223 server_display_comment = srv.display_comment; 224 server_country = srv.country_name; 225 server_country_code = srv.country_code; 226 server_location = srv.location; 227 server_host_name = srv.hosting_name; 228 server_host_url = srv.hosting_url; 229 server_json_pingtest_v4 = srv.url_json_pingtest_v4; 230 server_json_pingtest_v6 = srv.url_json_pingtest_v6; 231 server_distance = srv.distance; 232 $("#server_select").attr("data-server", srv.id); 233 $("#server_name").text(srv.display_name); 234} 235 236function test_init() { 237 st_state = 0; 238 $("#speedtest_loading").show(); 239 dbip.getVisitor().then(function(visitor) { 240 $.ajax({ 241 url: "//ipv6-test.com/json/servers.php?ping&PHPSESSID=iu9nhpid5fo2hf4i0e1vvopdj1&loc=" + visitor.latitude + "," + visitor.longitude, 242 dataType: "jsonp", 243 timeout: 60000, 244 success: function(resp) { 245 $("#speedtest_loading").hide(); 246 if (resp.error) { 247 show_error(resp.error); 248 return; 249 } 250 if (!resp.servers) { 251 show_error("sorry, no available test server at the moment"); 252 return; 253 } 254 servers = resp.servers; 255 servers_https_only = resp.https_only; 256 fill_servers_combo(); 257 update_server_info(); 258 start_pingtest(); 259 $("#speedtest_ready").fadeIn(); 260 }, 261 error: function(xopt, err) { 262 $("#speedtest_loading").hide(); 263 show_error("cannot initialize speed test: " + err); 264 }, 265 }); 266 }); 267} 268 269var series_v4_rtt, 270 series_v4_loss, 271 series_v6_rtt, 272 series_v6_loss; 273 274function graph_add_values(proto, rtt, loss) { 275 var x = (new Date()).getTime(); 276 var maxPoints = 180; 277 if (proto == "v4") { 278 if (typeof series_v4_rtt === "undefined") { 279 return; 280 } 281 series_v4_rtt.addPoint({ 282 name: server_display_name, 283 x: x, 284 y: rtt, 285 }, false, series_v4_rtt.data.length > maxPoints); 286 series_v4_loss.addPoint([x, loss], true, series_v4_loss.data.length > maxPoints); 287 } else { 288 if (typeof series_v6_rtt === "undefined") { 289 return; 290 } 291 series_v6_rtt.addPoint({ 292 name: server_display_name, 293 x: x, 294 y: rtt, 295 }, false, series_v6_rtt.data.length > maxPoints); 296 series_v6_loss.addPoint([x, loss], true, series_v6_loss.data.length > maxPoints); 297 } 298} 299 300function init_graphs() { 301 Highcharts.setOptions({ 302 global: { 303 useUTC: false 304 } 305 }); 306 $('#graph_v4').highcharts({ 307 chart: { 308 type: 'area', 309 backgroundColor: "#f0f0f0", 310 animation: Highcharts.svg, 311 alignTicks: false, 312 events: { 313 load: function() { 314 series_v4_rtt = this.series[0]; 315 series_v4_loss = this.series[1]; 316 }, 317 }, 318 }, 319 plotOptions: { 320 area: { 321 marker: { 322 enabled: false, 323 symbol: 'circle', 324 radius: 2, 325 states: { 326 hover: { 327 enabled: true, 328 }, 329 }, 330 }, 331 }, 332 }, 333 title: null, 334 xAxis: { 335 type: 'datetime', 336 tickPixelInterval: 150, 337 }, 338 yAxis: [{ 339 title: { 340 text: "RTT in milliseconds", 341 }, 342 min: 0, 343 }, { 344 title: { 345 text: "Packet loss pct.", 346 }, 347 min: 0, 348 max: 100, 349 gridLineWidth: 0, 350 opposite: true, 351 }], 352 tooltip: { 353 shared: true, 354 }, 355 legend: { 356 enabled: false, 357 }, 358 credits: { 359 enabled: false, 360 }, 361 exporting: { 362 enabled: false, 363 }, 364 series: [{ 365 name: "RTT", 366 data: [], 367 tooltip: { 368 valueSuffix: "ms", 369 }, 370 unit: "ms", 371 }, { 372 name: "Loss", 373 data: [], 374 color: '#f08080', 375 yAxis: 1, 376 tooltip: { 377 valueSuffix: "%", 378 }, 379 unix: "%", 380 }], 381 }); 382 $("#graph_v6").highcharts({ 383 chart: { 384 type: 'area', 385 backgroundColor: "#f0f0f0", 386 animation: Highcharts.svg, 387 alignTicks: false, 388 events: { 389 load: function() { 390 series_v6_rtt = this.series[0]; 391 series_v6_loss = this.series[1]; 392 }, 393 }, 394 }, 395 plotOptions: { 396 area: { 397 marker: { 398 enabled: false, 399 symbol: 'circle', 400 radius: 2, 401 states: { 402 hover: { 403 enabled: true, 404 }, 405 }, 406 }, 407 }, 408 }, 409 title: null, 410 xAxis: { 411 type: 'datetime', 412 tickPixelInterval: 150, 413 }, 414 yAxis: [{ 415 title: { 416 text: "RTT in milliseconds", 417 }, 418 min: 0, 419 }, { 420 title: { 421 text: "Packet loss pct.", 422 }, 423 min: 0, 424 max: 100, 425 gridLineWidth: 0, 426 opposite: true, 427 }], 428 tooltip: { 429 shared: true, 430 }, 431 legend: { 432 enabled: false, 433 }, 434 credits: { 435 enabled: false, 436 }, 437 exporting: { 438 enabled: false, 439 }, 440 series: [{ 441 name: "RTT", 442 data: [], 443 tooltip: { 444 valueSuffix: "ms", 445 }, 446 unit: "ms", 447 }, { 448 name: "Loss", 449 data: [], 450 color: '#f08080', 451 yAxis: 1, 452 tooltip: { 453 valueSuffix: "%", 454 }, 455 unix: "%", 456 }], 457 }); 458} 459 460function update_ui(tid) { 461 462 var gid; 463 var ldata; 464 var edata; 465 var idata; 466 467 switch (tid) { 468 469 case 0: 470 gid = "v4"; 471 ldata = ldata_v4; 472 edata = edata_v4; 473 idata = v4data; 474 break; 475 476 case 1: 477 gid = "v6"; 478 ldata = ldata_v6; 479 edata = edata_v6; 480 idata = v6data; 481 break; 482 483 } 484 485 var clr; 486 $("#value_addr_" + gid).html(idata.addr); 487 488 if (idata.rtt != null) { 489 if (idata.rtt > 500) { 490 clr = "#700"; 491 } else if (idata.rtt > 100) { 492 clr = "#770"; 493 } else { 494 clr = "#070"; 495 } 496 $("#value_rtt_" + gid).html(idata.rtt + " ms").css("color", clr); 497 } else { 498 $("#value_rtt_" + gid).html("<span class='unreach'>" + idata.status + "</span>"); 499 } 500 501 $("#value_ttl_" + gid).html(idata.ttl); 502 503 if (idata.err > 10) { 504 clr = "#700"; 505 } else if (idata.err > 0) { 506 clr = "#770"; 507 } else { 508 clr = "#070"; 509 } 510 $("#value_loss_" + gid).html(idata.err.toPrecision(3) + " %").css("color", clr); 511 512} 513 514function edata_avg(tid) { 515 516 var tmp = tid == 0 ? edata_v4_100 : edata_v6_100; 517 var tot = 0; 518 519 if (!tmp.length) return 0; 520 for (var i in tmp) tot += tmp[i]; 521 return (tot / tmp.length) * 100; 522 523} 524 525function handle_result(tid, resp) { 526
527 pending--; 528 529 var tmp = new Date(); 530 var time = tmp.getTime() - (tmp.getTimezoneOffset() * 1000 * 60); 531 var pdata; 532 var idata; 533 var err = edata_avg(tid); 534 var edata = 0; 535 536 if (resp == false) { 537 pdata = [time, null]; 538 idata = { addr: "<span class='unreach'>n/a</span>", rtt: null, ttl: "<span class='unreach'>n/a</span>", err: err, status: "n/a" }; 539 edata = 1; 540 } else { 541 pdata = [time, resp.rtt]; 542 idata = { addr: resp.addr, rtt: resp.rtt, ttl: resp.ttl, err: err, status: resp.status }; 543 if (resp.status != "ok") { 544 edata = 1; 545 } 546 } 547 548 switch (tid) { 549 550 case 0: 551 pending_v4 = false; 552 v4data = idata; 553 edata_v4_100.push(edata); 554 if (edata_v4_100.length > 100) edata_v4_100.shift(); 555 ldata_v4.push(pdata); 556 err = edata_avg(tid); 557 edata_v4.push([time, err]); 558 v4data.err = err; 559 graph_add_values("v4", !!resp.rtt ? parseFloat(resp.rtt) : null, err); 560 break; 561 562 case 1: 563 pending_v6 = false; 564 v6data = idata; 565 edata_v6_100.push(edata); 566 if (edata_v6_100.length > 100) edata_v6_100.shift(); 567 ldata_v6.push(pdata); 568 err = edata_avg(tid); 569 edata_v6.push([time, err]); 570 v6data.err = err; 571 graph_add_values("v6", !!resp.rtt ? parseFloat(resp.rtt) : null, err); 572 break; 573 574 } 575 576 update_ui(tid); 577 578} 579 580function run_pingtest() { 581 if ((pending > 1) || (!server_id)) return; 582 if (!pending_v4) { 583 $.ajax({ 584 url: server_json_pingtest_v4 + "?PHPSESSID=iu9nhpid5fo2hf4i0e1vvopdj1&callback=?", 585 dataType: "jsonp", 586 timeout: 5000, 587 success: function(resp) { handle_result(0, resp); }, 588 error: function(xopt, err) { handle_result(0, false); } 589 }); 590 pending++; 591 pending_v4 = true; 592 } 593 if (!pending_v6) { 594 $.ajax({ 595 url: server_json_pingtest_v6 + "?PHPSESSID=iu9nhpid5fo2hf4i0e1vvopdj1&callback=?", 596 dataType: "jsonp", 597 timeout: 5000, 598 success: function(resp) { handle_result(1, resp); }, 599 error: function(xopt, err) { handle_result(1, false); } 600 }); 601 pending++; 602 pending_v6 = true; 603 } 604 if (ldata_v4.length > 250) ldata_v4.shift(); 605 if (ldata_v6.length > 250) ldata_v6.shift(); 606 if (edata_v4.length > 250) edata_v4.shift(); 607 if (edata_v6.length > 250) edata_v6.shift(); 608} 609 610function start_pingtest() { 611 $("#box_pingtest_v4, #box_pingtest_v6").fadeIn(); 612 init_graphs(); 613 setInterval(run_pingtest, 1000); 614} 615 616function i6tOnLoad() { 617 $("#hide_noscript").css("display", ""); 618 test_init(); 619} 620 621</script>
621 622 623 </div> 624 625 <div class="container" style="margin-top:6em"> 626 <footer id='footer_text' class="small"> 627 Copyright © 2026 ipv6-test.com | <a href='bitcoin:1Ln1WDAuDfGxV4SLSsyLXrZf2Hs65haybk'>donate</a> | <a href='/contact.php'>contact</a><br /> 628 <span class='small'><a href='https://db-ip.com/api/?refid=i6t'>IP geolocation API</a></span> 629 </footer> 630 </div> 631 632 <!-- AddThis Smart Layers BEGIN --> 633 <!-- Go to http://www.addthis.com/get/smart-layers to customize --> 634
634<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=six0r"></script>
634 635
635<script type="text/javascript"> 636 addthis.layers({ 637 'theme' : 'transparent', 638 'share' : { 639 'position' : 'left', 640 'numPreferredServices' : 5 641 } 642 }); 643 </script>
643 644 <!-- AddThis Smart Layers END --> 645 646
646<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
646 647
647<script>window.jQuery || document.write('
647<script src="/js/vendor/jquery-1.11.3.min.js"><\/script>')</script>
647 648 649
649<script src="/js/vendor/bootstrap.min.js"></script>
649 650
650<script src="//code.highcharts.com/highcharts.js"></script>
650 651
651<script src="/js/main.js"></script>
651 652 <!-- Begin Cookie Consent plugin by Silktide - http://silktide.com/cookieconsent --> 653
653<script type="text/javascript">window.cookieconsent_options = {"message":"We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information youâve provided to them or theyâve collected from your use of their services. Third parties such as Google may use cookies on ipv6-test.com for ad personalisation, you can lean more about how Google uses this data at <a href='https://policies.google.com/technologies/partner-sites'>Googleâs Privacy & Terms site</a>.","dismiss":"Got it!","learnMore":"More info","link":null,"theme":"dark-bottom"};</script>
653 654
654<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/1.0.10/cookieconsent.min.js"></script>
654 655 <!-- End Cookie Consent plugin --> 656 </body> 657</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.