Deep-dive into Cloudflare’s Speed Test

There are lot of web apps available to test your home internet connection. Your ISP will have their own tool, I use fast.com from Netflix and Netgear Genie to make sure I am connected to Internet or not. Couple weeks ago Cloudflare has released its home grown solution to test the home internet connection called Speed Test. You can access it from https://speed.cloudflare.com/ This blog post will deep-dive into Cloudflare’s Speed Test.

Why another speed test app?

As I mentioned earlier, there are hundreds of web apps and mobile apps available to test the internet connection. But why Cloudflare has to (re)create again. I believe Cloudflare is the new Google. Here is the excerpt from Cloudflare:

Although there are a slew of speed testing tools out there, none of them give you precise insights into how they came to those measurements and how they map to real-world performance. With speed.cloudflare.com, we give you insights into what we’re measuring and how exactly we calculate the scores for your network connection.

Cloudflare’s speed test doesn’t have a fancy domain name like fast.com. It is hosted under sub-domain of cloudflare.com.

How to get started?

Unlike other web or mobile app, there is no start button in Speed Test (let’s call Speed Test). E.g. Speedtest.net has a GO button, if a user want to start the test, they can simply click on that button.

After visiting https://speed.cloudflare.com/, your test will start immediately. After all the tests are completed, you can see the results instantly.

Deep-dive into Cloudflare's Speed Test
Deep-dive into Cloudflare’s Speed Test

Speed Test displays key metrics such as Download speed, Latency, and Jitter in the main dashboard. Detailed measurements will get displayed just beneath the main dashboard. Server Location will get displayed in the right pane as shown above.

Privacy Policy

As mentioned in the Cloudflare Privacy Policy, they do not sell your data. Performance data is collected, anonymized and is governed by the terms of Cloudflare. For more details you can refer this link https://www.cloudflare.com/privacypolicy/

Let’s talk performance

After you launch the Speed Test, it will connect you to the nearest data center. You can see the map in the right pane as shown below. My closest data center is Chicago as shown below.

Server Location
Server Location

If you zoom in to the Cloudflare data center, it will not reveal the exact location of data center, instead it will display the airport location. It uses Anycast network (from Cloudflare) to detect the nearest data center.

Server Location using IATA code
Server Location using IATA code

After connecting to the nearest data center, Latency and Jitter test will kick off.

Latency will be measured using 20 iterations and the median will be considered. Lower the number better the performance. Latency is nothing but time to first byte from browser perspective.

Measurements and Chart representation
Measurements and Chart representation
  1. Each dot represents the individual measurement
  2. Rectangle represents the measurements from 25th percentile to 75th percentile
  3. Solid line inside the rectangle represents the median
  4. Dotted line represents average.

Here is the zoomed in image.

Latency Measurement Chart
Latency Measurement Chart

Here is the definition of Jitter. Lower the number is better.

Jitter
Jitter

After Latency and Jitter measurement, the app will start downloading small files starting from 10kB and it reaches the threshold based on the performance.

Important Note:

As mentioned above, the app will first connect to the data center and runs latency and jitter tests and then it will kick off the download tests. But this will cause Bufferbloat. This issue has been raised in Cloudflare GitHub repository by Toke Høiland-Jørgensen https://github.com/tohojo. Here is the issue id.

The suggestion from Toke is to continue the latency tests during the download tests. This suggestion will improve the metrics and performance.

As you see my network performance, it was able to reach till 25 MB download test. More the file size, lesser the number of iterations. If your network performance is poor, you may not be able to reach for 10MB download test.

Download Measurements
Download Measurements
  • 10kB has 10 iterations
  • 100kB has 10 iterations
  • 1MB has 8 iterations
  • 10MB has 5 iterations
  • 25MB has 3 iterations

Interesting Facts

  • Max file size that you can reach is 100MB :)
  • If you open the file which Speed Test is downloading is nothing but string of zeroes and some random string at the end.

If you click on the chart, you can see the detailed metrics.

Raw Data
Raw Data

For the final download internet speed, it will calculate the overall 90th percentile. You can also download the metrics by clicking on Download button as shown below.

Download Results
Download Results

Here is my raw data:

timeFormatted TimestampdirectionbyteslatencybpsFormatted MbpsttfbdurationresponseSize
15916433674148:09:27 PMdownload030.135020985492134.6785.492134678152.1350.8900000251611
15916433681118:09:28 PMdownload10000031.51511296174902506.4174.902506449.514999964.585000046101241
15916433687488:09:29 PMdownload027.910070985489820.2715.48982027151.909999980.8350000131573
15916433700808:09:30 PMdownload033.089942981062008.7451.06200874598.089999981.1449999871152
15916433703868:09:30 PMdownload029.0750711460869.6561.46086965653.0750.6899999571126
15916433705908:09:31 PMdownload032.269874011231515.1581.23151515850.270000010.8249999961127
15916433709198:09:31 PMdownload030.240039991651612.8871.65161288747.239999990.6200000061128
15916433712928:09:31 PMdownload031.285080021296202.5941.29620259465.285000020.7899999621128
15916433715278:09:32 PMdownload029.820113045209091.2135.20909121347.820000040.8799999491573
15916433718988:09:32 PMdownload029.370092011228571.4381.22857143850.370000010.8399999931129
15916433720988:09:32 PMdownload048.589946991385234.851.3852348567.589999990.7450000271129
15916433722558:09:32 PMdownload026.699802041664516.1121.66451611243.700000040.6200000061129
15916433723768:09:32 PMdownload028.50486301905263.15190.90526315259.505000011.1400000081129
15916433724878:09:32 PMdownload031.494873985942856.8165.94285681649.494999980.7700000421572
15916433725848:09:33 PMdownload028.885133991563636.4551.56363645543.884999990.6599999611129
15916433726678:09:33 PMdownload032.674802021155555.5381.15555553849.675000020.7200000111104
15916433727508:09:33 PMdownload029.800040011011764.7391.01176473946.800000011.0199999671129
15916433728708:09:33 PMdownload029.145112961885271.2541.88527125447.144999960.6450000221152
15916433730068:09:33 PMdownload056.45492601443290.04120.44329004178.455000012.3100000111128
15916433731028:09:33 PMdownload028.105092046366667.0856.36666708549.105000040.7199999531573
15916433731748:09:33 PMdownload027.770112971220740.7091.22074070945.769999970.6750000181103
15916433732728:09:33 PMdownload1000030.41511297102460756.9102.460756948.414999970.7900000211118
15916433736828:09:34 PMdownload1000039.75020666472129.2666.4721292655.751.22000003511137
15916433738538:09:34 PMdownload1000041.03020603105756870.2105.756870257.030000030.76499994611113
15916433739698:09:34 PMdownload1000033.92511102111856553.1111.856553174.925000020.72499999111137
15916433740538:09:34 PMdownload1000028.5000400182552194.7282.5521947245.500000011.02500000511577
15916433741448:09:34 PMdownload1000028.56506101116684892.9116.684892942.565000010.69499999511137
15916433742778:09:34 PMdownload1000038.88990298102713921.4102.713921486.889999980.7900000211143
15916433744078:09:34 PMdownload1000038.1101640282759187.6182.7591876160.110000020.97999995311138
15916433745318:09:35 PMdownload1000032.61020398111090406.6111.090406671.609999980.73000002911137
15916433746208:09:35 PMdownload1000031.30987403114208451.8114.208451849.310000030.70999999311136
15916433747318:09:35 PMdownload10000030.39518498165389732.9165.389732949.394999984.870000004101681
15916433750358:09:35 PMdownload10000051.87004002138888312.4138.888312468.870000025.774999969101260
15916433751578:09:35 PMdownload10000040.0547810198209430.4298.2094304260.055000018.165000007101235
15916433753208:09:35 PMdownload10000030.74004001113958208.7113.958208747.740000017.035000017101212
15916433754368:09:35 PMdownload10000029.59521598101120806.8101.120806855.594999987.930000022101236
15916433755228:09:36 PMdownload10000032.359998194393210.4194.393210455.364.125000036101234
15916433756448:09:36 PMdownload10000034.38527868490476.0668.4904760651.38511.76000002101681
15916433757578:09:36 PMdownload10000060.48020599149920000.2149.920000276.479999995.349999992101259
15916433758558:09:36 PMdownload10000029.11989504134430847.5134.430847544.120000045.96499996101235
15916433760338:09:36 PMdownload100000051.000061103707593.7103.70759376577.234999981002232
15916433762538:09:36 PMdownload100000037.5649139882013085.5482.0130855472.5649999897.665000011002226
15916433764348:09:36 PMdownload100000034.2799680297937372.3997.9373723950.2800000281.784999991002226
15916433766408:09:37 PMdownload100000033.5799050169885387.8769.8853878758.58000001114.6651002676
15916433768468:09:37 PMdownload100000036.3000919993192321.1493.1923211457.2999999985.949999981002235
15916433770238:09:37 PMdownload100000029.92496798102189436.1102.189436145.9249999878.380000021002201
15916433772138:09:37 PMdownload100000038.399832114295890.4114.295890462.470.080000031002232
15916433773788:09:37 PMdownload100000034.02996798126017621.1126.017621150.0299999863.560000041002210
15916433780178:09:38 PMdownload1000000036.27003796155131678.5155.131678576.26999996516.26510012132
15916433787078:09:39 PMdownload1000000039.07500797138248324138.24832472.07499997579.3410012598
15916433794358:09:39 PMdownload1000000033.78005901132977885.5132.977885570.78000001602.27510012157
15916433801498:09:40 PMdownload1000000032.380059136674065136.67406569.38585.98510012119
15916433808268:09:41 PMdownload1000000054.29975799153141530.7153.1415307100.3522.97510012149
15916433824468:09:42 PMdownload2500000029.70008799140018808.9140.018808996.699999991429.9625028662
15916433839068:09:44 PMdownload2500000039.27496201162604349.7162.6043497124.2751231.3425028655
15916433854328:09:45 PMdownload2500000029.27995203160793569.1160.7935691104.281245.2325029122

90th percentile formula is =PERCENTILE.EXC(G2:G57,0.9). Column G should have the speed in Mbps.

CSV Data
CSV Data

After your test is done, you can retest it. During the test you can pause the test.

Upload Speed Test

Upload Speed test has been temporarily turned off by Cloudflare due to some incorrect measurements.

Note: we’ve temporarily disabled upload testing while we investigate reports of incorrect upload speed reports on very fast connections.

From Cloudlfare blog

Network Trace

Here is the captured HTTP requests from developer tools in Edge.

Network Trace
Network Trace
  • 170 HTTP requests
  • ~30 seconds to finish the test
  • ~68 MB resources
  • ~61 MB transferred

Tech Stack

Speed Test is the open source project in GitHub.

Pros

I ran multiple tests in Speed Test. It is one of the best tool to measure the performance.

  • Its light weight
  • Results download in CSV format
  • Intuitive user interface
  • Neat graphs and insights about measurements
  • Responsive web app
  • Open source

Cons

  • You cannot change the server location
  • Still the measurement needs more accuracy
  • No start button

Conclusion

Cloudflare’s Speed Test is very light weight web app to measure the performance of your home network. It is fast and the results are intuitive. As of now, no upload tests and the accuracy can be improved while enabling latency measurement during download tests.

What is your favorite app to measure your internet performance? Please let me know in the comments.

Deep-dive into Cloudflare's Speed Test

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

79 views
Share via
Copy link