{"id":15917528,"url":"https://github.com/takuya/namebench","last_synced_at":"2026-01-19T23:33:51.941Z","repository":{"id":29370442,"uuid":"32905157","full_name":"takuya/namebench","owner":"takuya","description":"Automatically exported from code.google.com/p/namebench","archived":false,"fork":false,"pushed_at":"2015-03-26T03:20:40.000Z","size":27904,"stargazers_count":1,"open_issues_count":150,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T08:50:13.579Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takuya.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-26T03:18:06.000Z","updated_at":"2021-10-17T06:55:46.000Z","dependencies_parsed_at":"2022-09-20T06:51:21.582Z","dependency_job_id":null,"html_url":"https://github.com/takuya/namebench","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/takuya/namebench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fnamebench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fnamebench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fnamebench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fnamebench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takuya","download_url":"https://codeload.github.com/takuya/namebench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takuya%2Fnamebench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28590116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-06T18:11:16.702Z","updated_at":"2026-01-19T23:33:51.922Z","avatar_url":"https://github.com/takuya.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Are you a power-user with 5 minutes to spare? Do you want a faster internet\nexperience?\n\nTry out namebench. It hunts down the fastest DNS servers available for your\ncomputer to use. namebench runs a fair and thorough benchmark using your web\nbrowser history, tcpdump output, or standardized datasets in order to\nprovide an individualized recommendation. namebench is completely free and\ndoes not modify your system in any way. This project began as a 20% project\nat Google.\n\nnamebench runs on Mac OS X, Windows, and UNIX, and is available with a\ngraphical user interface as well as a command-line interface. \n\nRequirements:\n\n  * Python 2.4 - 2.6. If you are using Mac OS X or Linux, this is\n    built-in. Otherwise, visit http://www.python.org/\n\n--[ quick use guide ]---------------------------------------------------------\n\nnamebench comes with two interfaces: a simple graphical interface, and a\nmore advanced command-line interface. If you have downloaded the versions\nfor Mac OS X and Windows, you will get the graphical interface by default.\n\nMost people will simply want to run this software with no arguments:\n\n  ./namebench.py\n\nOn UNIX, if you have python-tk installed, a graphical interface will pop up.\nIf you would like to force use of the command-line, use -x:\n\n  ./namebench.py -x\n\nIf you want to specify an additional set of name services, simply add the IP\nto the command-line, or edit namebench.cfg:\n\n  ./namebench.py 10.0.0.1 192.168.0.1\n\n--[ credit ]------------------------------------------------------------------\n\nnamebench includes some wonderful third party software:\n\n * dnspython 1.8.0 (http://www.dnspython.org/)\n * httplib2 0.6.0 (http://code.google.com/p/httplib2/)\n * graphy 1.0 (http://graphy.googlecode.com/)\n * jinja2 2.2.1 (http://jinja.pocoo.org/2/)\n * python 2.5 pkg_resources (http://www.python.org/) \n * simplejson 2.1.1 (http://code.google.com/p/simplejson/)\n * Crystal SVG icons (http://www.everaldo.com/crystal/)\n\nFor licensing information, see the LICENSE file within the appropriate\nsubdirectory.\n\n--[ options ]-----------------------------------------------------------------\n\nUsage: namebench.py [options]\n\nOptions:\n  -h, --help            show this help message and exit\n  -r RUN_COUNT, --runs=RUN_COUNT\n                        Number of test runs to perform on each nameserver.\n  -z CONFIG, --config=CONFIG\n                        Config file to use.\n  -o OUTPUT_FILE, --output=OUTPUT_FILE\n                        Filename to write output to\n  -t TEMPLATE, --template=TEMPLATE\n                        Template to use for output generation (ascii, html,\n                        resolv.conf)\n  -c CSV_FILE, --csv_output=CSV_FILE\n                        Filename to write query details to (CSV)\n  -j HEALTH_THREAD_COUNT, --health_threads=HEALTH_THREAD_COUNT\n                        # of health check threads to use\n  -J BENCHMARK_THREAD_COUNT, --benchmark_threads=BENCHMARK_THREAD_COUNT\n                        # of benchmark threads to use\n  -P PING_TIMEOUT, --ping_timeout=PING_TIMEOUT\n                        # of seconds ping requests timeout in.\n  -y TIMEOUT, --timeout=TIMEOUT\n                        # of seconds general requests timeout in.\n  -Y HEALTH_TIMEOUT, --health_timeout=HEALTH_TIMEOUT\n                        health check timeout (in seconds)\n  -i INPUT_SOURCE, --input=INPUT_SOURCE\n                        Import hostnames from an filename or application\n                        (alexa, cachehit, cachemiss, cachemix, camino, chrome,\n                        chromium, epiphany, firefox, flock, galeon, icab,\n                        internet_explorer, konqueror, midori, omniweb, opera,\n                        safari, seamonkey, squid, sunrise)\n  -I, --invalidate_cache\n                        Force health cache to be invalidated\n  -q QUERY_COUNT, --query_count=QUERY_COUNT\n                        Number of queries per run.\n  -m SELECT_MODE, --select_mode=SELECT_MODE\n                        Selection algorithm to use (weighted, random, chunk)\n  -s NUM_SERVERS, --num_servers=NUM_SERVERS\n                        Number of nameservers to include in test\n  -S, --system_only     Only test the currently configured system\n  - nameservers.\n  -w, --open_webbrowser\n                        Opens the final report in your browser\n  -u, --upload_results  Upload anonmyized results to SITE_URLl (default:\n                        False)\n  -U SITE_URL, --site_url=SITE_URL\n                        URL to upload results to\n                        (http://namebench.appspot.com/)\n  -H, --hide_results    Upload results, but keep them hidden from indexes.\n  -x, --no_gui          Disable GUI\n  -C, --enable-censorship-checks\n                        Enable censorship checks\n  -6, --ipv6_only       Only include IPv6 name servers\n  -O, --only            Only test nameservers passed as arguments\n\n--[ sample output ]-------------------------------------------------------------\n\nnamebench 1.3b1 - best history source (automatic) on 2010-05-27 08:34:46.585534\nthreads=40/2 queries=250 runs=1 timeout=3.5 health_timeout=3.75 servers=11\n------------------------------------------------------------------------------\n- Reading Top 2,000 Websites (Alexa): data/alexa-top-2000-domains.txt (0.7MB)\n- Reading Cache Latency Test (100% hit): data/cache-hit.txt (0.1MB)\n- Reading Cache Latency Test (100% miss): data/cache-miss.txt (0.1MB)\n- Reading Cache Latency Test (50% hit, 50% miss): data/cache-mix.txt (0.1MB)\n- Skipping /home/tstromberg/Library/Application Support/Chromium/Default/History (168d old)\n- Generating tests from Top 2,000 Websites (Alexa) (33575 records, selecting 250 automatic)\n- Selecting 250 out of 33542 sanitized records (weighted mode).\n\n- Checking query interception status...\n- Checking connection quality: 1/3...3/3\n- Congestion level is 36.88X (check duration: 1475.29ms)\n- Applied 4.50X timeout multiplier due to congestion: 2.2 ping, 3.5 standard, 16.9 health.\n- Checking latest sanity reference\n- Checking nameserver health (4040 servers)\n- Building initial DNS cache for 4040 nameservers (40 threads)\n- Checking nameserver availability (40 threads): ............\n- 4040 of 4040 tested name servers are available\n- Running initial health checks on 404 servers (35 threads): ............\n- 245 of 404 tested name servers are healthy\n- Making UltraDNS-2 [udns4tcam] the primary anycast - faster than UltraDNS [udns5abld] by 9.07ms\n- Making OpenDNS-2 [2.lon] the primary anycast - faster than OpenDNS [2.lon] by 58.92ms\n- Making DynGuide [ig-02-ams] the primary anycast - faster than DynGuide-2 [ec-02-spl] by 11.34ms\n- Picking 16 secondary servers to use (8 nearest, 8 fastest)\n- Waiting for wildcard cache queries from 22 servers (22 threads): 0/22............22/22\n- Waiting 4s for TTL's to decrement.\n- Running cache-sharing checks on 22 servers (40 threads): ............\n- Disabling Localhost IPv4 [anodized] - slower replica of Internal 10-1 [anodized] by 23.5ms.\n- Picking 6 secondary servers to use (3 nearest, 3 fastest)\n- Benesol BE [85.158.210.68] appears to be the nearest regional (10.46ms)\n- Running final health checks on 11 servers (11 threads): 0/11.......11/11\n\nFinal list of nameservers considered:\n------------------------------------------------------------------------------\n4.2.2.5         Genuity BAK        29  ms | \n194.74.65.68    BT-6 GB            30  ms | \n208.67.222.222  OpenDNS-2          31  ms | www.google.com is hijacked: google.navigation.opendns.com\n195.99.66.220   EU BT AMS NL       34  ms | \n156.154.71.1    UltraDNS-2         41  ms | NXDOMAIN Hijacking\n193.74.208.65   Scarlet-0 BE       45  ms | \n8.8.4.4         Google Public DNS- 54  ms | (excluded: Shares-cache with current primary DNS server)\n8.8.8.8         Google Public DNS  57  ms | Replica of ::1, Replica of 10.0.0.1, Replica of 8.8.4.4\n216.146.35.35   DynGuide           62  ms | NXDOMAIN Hijacking\n82.146.118.12   Econoweb BE        63  ms | \n212.71.8.11     EDPnet-2 BE-2      66  ms | \n85.158.210.68   Benesol BE         82  ms | \n\n- Sending 250 queries to 11 servers: ............\n- Error querying OpenDNS-2 [208.67.222.222]: www.360buy.com.: Timeout\n- Error querying Econoweb BE [82.146.118.12]: tieba.baidu.com.: Timeout\n\n\nFastest individual response (in milliseconds):\n----------------------------------------------\nScarlet-0 BE     ##################### 10.71286\nBenesol BE       ###################### 11.12390\nEDPnet-2 BE-2    ###################### 11.39688\nEconoweb BE      ####################### 11.84607\nOpenDNS-2        ############################ 14.16492\nBT-6 GB          ############################ 14.27984\nGenuity BAK      ############################ 14.33086\nDynGuide         ################################# 17.08102\nEU BT AMS NL     ################################### 17.74192\nGoogle Public DN ######################################## 20.69783\nUltraDNS-2       ###################################################### 27.56095\n\nMean response (in milliseconds):\n--------------------------------\nGoogle Public DN ########## 62.97\nBT-6 GB          ################### 123.89\nScarlet-0 BE     #################### 127.88\nGenuity BAK      ####################### 150.14\nUltraDNS-2       ######################### 161.57\nOpenDNS-2        ############################ 182.91\nEU BT AMS NL     ############################# 192.26\nDynGuide         ############################### 205.30\nBenesol BE       ############################### 206.70\nEDPnet-2 BE-2    ################################## 227.69\nEconoweb BE      ##################################################### 355.61\n\nResponse Distribution Chart URL (200ms):\n----------------------------------------\nhttp://chart.apis.google.com/chart?cht=lxy\u0026chs=720x415\u0026chxt=x,y\u0026chg=10,20\u0026chxr=0,0,200|1,0,100...\n\nResponse Distribution Chart URL (Full):\n---------------------------------------\nhttp://chart.apis.google.com/chart?cht=lxy\u0026chs=720x415\u0026chxt=x,y\u0026chg=10,20\u0026chxr=0,0,3500|1,0,100...\n\nRecommended configuration (fastest + nearest):\n----------------------------------------------\nnameserver 8.8.8.8         # Google Public DNS  \nnameserver 193.74.208.65   # Scarlet-0 BE  \nnameserver 85.158.210.68   # Benesol BE  \n\n********************************************************************************\nIn this test, Your current primary DNS server is Fastest  \n********************************************************************************\n\n- Saving report to /tmp/namebench_2010-05-27_0842.html\n- Saving detailed results to /tmp/namebench_2010-05-27_0842.csv\n\n\n--[ FAQ ]-----------------------------------------------------------------------\n\nSee http://code.google.com/p/namebench/wiki/FAQ for more recent updates.\n\n1) What does 'NXDOMAIN Hijacking' mean?\n\n  This means that the specific DNS server returns a false entry when a\n  non-existent record is requested. This entry likely points to a website\n  serving a 'Host not found' page with banner ads.\n\n2) What does 'www.google.com. may be hijacked' mean?\n\n  This means that when a user requests 'www.google.com', they are being\n  silently redirected to another server. The page may look like it's run by\n  Google, but it is instead being proxied through another server. For details,\n  try using the host command. In this case, this particular IP server is\n  redirecting all traffic to http://google.navigation.opendns.com/\n\n  % host www.google.com. 208.67.220.220\n  Using domain server:\n  Name: 208.67.220.220\n  Address: 208.67.220.220#53\n  Aliases:\n\n  www.google.com is an alias for google.navigation.opendns.com.\n  google.navigation.opendns.com has address 208.67.217.230\n  google.navigation.opendns.com has address 208.67.217.231\n\n\n3) What does 'google.com. may be hijacked' mean?\n\n  The same as above, but it is a rarer condition as it breaks http://google.com/\n\n4) What does 'thread.error: can't start new thread' mean?\n\n  It means you are using too many threads. Try restarting namebench.py with -j8\n\n5) What does 'unhealthy: TestWwwGoogleComResponse \u003cclass 'dns.exception.Timeout'\u003e' mean?\n\n  It means the specified nameserver was too slow to answer you. If all of your\n  nameservers are timing out, try restarting namebench.py with -Y 4\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakuya%2Fnamebench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakuya%2Fnamebench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakuya%2Fnamebench/lists"}