<% if(!relays) { %> <% if(error == 0) { %>
No Results found!

No Tor relays matched your query :(

Return to home page

<% } else if (error == 2) { %>
Backend error!

Relay Search is unable to get a response from its backend server. This probably means that the backend server is unavailable right now. This can also happen, however, if you did not format your query correctly. Please have a look at the About page that explains what type of search queries are supported by Relay Search.

<% } else if (error == 3) { %>
JavaScript Error!

There is a problem with your javascript environment, you may have noscript enabled on the remote onionoo backend. Try temporarily allowing noscript to connect to the backend IP address. If the problem persits consult the bugtracker.

<% } else if (error == 4) { %>
Query error!

The backend server reports a problem with your query. Please have a look at the About page that explains what type of search queries are supported by Relay Search.

<% } else if (error == 5) { %>
No query submitted!

The search query was found to be empty, which is not supported. You must enter a search query in order to generate results. Please have a look at the About page that explains what type of search queries are supported by Relay Search.

<% } %> <% } else { %> <% if (error == 4) { %>
Too many matches!

The current version of Relay Search does not support a result set greater than 2000 and only displays the first 2000 hits. This is due to some performance issues in rendering large results sets in JavaScript. Future versions will hopefully manage to overcome this issue.

<% if ( ! query.includes("running:true") ) { %>

You may find it useful to add running:true to your query to only return relays that are currently running.

<% } %>
<% } %> <% _.each(relays, function(relay) { %> <% if (relay.get('running') === false) { %> <% if ( relay.get('country')) { %> <% } else { %> <% } %> <% }); %>
Nickname Advertised Bandwidth Uptime Country IPv4 IPv6 Flags Add. Flags ORPort DirPort Type
  Total                    
<% } else if (relay.get('overload_general_timestamp') != null) { %>
<% } else { %>
<% } %> <%= _.escape(relay.get('nickname')) %> <% if (!relay.get('is_bridge')) { %> (<%= relay.get('effective_family') == null ? 1 : relay.get('effective_family').length + 1 %>) <% } %> <%= relay.get('bandwidth_hr') %> <% if (relay.get('running') === false) { %><% } %><%= relay.get('uptime_hr') %><% if (relay.get('running') === false) { %><% } %> <%= relay.get('countryname') %> Unknown<%= relay.get('or_address') %> <%= (relay.get('or_v6_address')) ? relay.get('or_v6_address') : '-' %> <% _.each(relay.get('flags'), function(flag) { %><%= flag[0] %><% }); %> <% _.each(relay.get('additional_flags'), function(flag) { %><%= flag[0] %><% }); %> <%= relay.get('or_port') %> <% if ( relay.get('dir_port') == "0") { %> <%= relay.get('dir_port') %> <% } else { %> <%= relay.get('dir_port') %> <% } %> <% if (relay.get('is_bridge')) { %> Bridge <% } else { %> Relay <% } %>

The number shown in parentheses is the total effective family size for the relay including the relay itself. A size of 1 indicates that the relay does not have any other effective family members. Note that bridge relays do not advertise family members in their descriptors and so there is no value shown for bridge relays.

<% } %> <% if(relays || error == 0) { %>

Information for relays was published: <%= relaysPublished %> UTC.
Information for bridges was published: <%= bridgesPublished %> UTC.

Onionoo version: <%= onionooVersion %>/<%= buildRevision %>

<% } %>