Welcome to the GDLS documentation

Here you can find answers to frequently asked questions (FAQ). Some useful information that can helps you with working with this website. How does it working and more things. This documentation is splitted by 3 parts:

  1. Introduction - how does this project appeard, who is author, etc.
  2. Pages - explanation about some pages on this website.
  3. FAQ - answers to frequently asked questions.

1. Introduction

What is GDLS?

GDLS (Geometry Dash Level Scan) - is a project by HeXi, that is a huge array with 1.9 million absolutely random Geometry Dash levels. Here you can search here levels by filters, that unavailable in vanilla Geometry Dash, some fun thigs with GDBrowser API and more.

Video explanation

How does it work?

First, the code generates a random number between 128 and ~118 million. Then it sends a query to https://gdbrowser.com/api/level/[this_random_number] and if a level with such an ID exists, the script adds all its data to the array. After that, the code repeats this operation. Thus the script worked from 04.27.2025 to 04.28.2025 (129k levels), then from 05.15.2025 to 06.16.2025 (total 34 days until the IP was blocked in GDBrowser). Level scanning speed of approximately 2 levels/second.


2. Pages

At this chapter will explain how to use the individual pages on the site and how they work. There are three rows of buttons on the home page. The first row uses the data that I scanned. The second row simply uses GDBrowser's API. The third line includes technical stuff like the source codes I used

Here you can search for levels in the stats by various criteria. You will have a lot of conditions in front of you that you can add. If the input field contains either an empty string or the word “Any” (works only for drop-down lists), the condition will not affect the result. To the left of the input field will be a dropdown list with an operator that you can change. Some of the operators may not be clear. Here is an explanation of all of them

Operator Meaning Example with numbers Example with text
= Equals 420 = 420 "bye" = "bye"
!= Not equals 420 != 128 "bye" != "hi"
> More 420 > 128 -
< Less 420 < 500 -
>= More or equals 420 >= 420 -
<= Less or equals 420 <= 420 -
Between In range of two numbers 420 between "128 500" -
Includes Includes a text 420 includes 42 "bye" includes "by"
Starts with Text is starting with [__] 420 starts with 42 "bye" starts with "b"
Ends with Text is ends with [__] 420 ends with 20 "bye" ends with "e"
Not between Not in range of two numbers 420 not between "500 650" -
Not includes Not includes a text 420 not includes "28" "bye" not includes "hi"
Not starts with Text is not starting with [__] 420 not starts with "20" "bye" not starts with "e"
Not ends with Text is not ends with [__] 420 not ends with "42" "bye" not ends with "by"

As you can see not all operators are used in strings, but any pure can be represented as a string. Therefore, for example, “Name” does not have a Between operator.

How does "Between" operator works?

For example, if you want the level id to be between a and b, you enter “a b” in the input field. a is the minimum value, b is the maximum value. Here's some examples

x between 100 and 1000: "100 1000"
x between 165 and 200: "165 200"


Inversion works with same way.


x is not between 100 and 1000: "100 1000"
x is not between 165 and 200: "165 200"

What is position property?

The position is an integer number from 0 to 1 951 419 (the length of the entire array of levels). All levels are sorted by ID and position is their sequence number. That is, the level with position 0 will be the oldest level in the data. And the level with position 1 951 419 will be the newest. You can see levels with positions on the “fun” page.


Here you can independently collect statistics on certain parameters. In the top menu you can select a parameter to collect statistics on. At the bottom you can choose how to sort the result.
Value - sorting by the number of uses of a certain parameter value.
Alphabet - sorting by the alphabet of the parameter.
Length - sorting by the length of the key. If you click the Reverse checkbox, the result will be displayed in reverse order. After pressing the Start button you will be shown the table with the result. The Key column is the value of the parameter you selected.
“Value” - the number of levels matched by the “Key” cell on the left.
“Percentage” - the percentage of such levels from the total mass.


Some fun things that you can do with all levels.

Fetch level by ID

Type your level ID at the input. If this level is in the data you will see its data. Otherwise, the two closest levels to this id will be displayed

Fetch levels

In this section you can see the levels in a certain interval of the ID. Enter the minimum and maximum ID or position in the input fields and all levels in this interval will be displayed in [ID]: [Name] by [Author] ([Position] Difference [Difference]) format.


What is difference?

You can meet this parameter on this page. It is called differently in different places. In the ID search it is shown in the nearest levels and means the difference in the ID of the requested level and the nearest level, roughly speaking
[Input level ID] - [Closest level ID]. And in search the difference is considered to be [Level ID] - [Previous level ID].

In this section, you write the level's id and you are displayed all its information (if the level exists), which is returned by GDBrowser

When you press the “Start” button, the search for unlisted levels begins. The result will appear at the top, the audit will appear at the bottom, which shows what the script is doing. The length of unlisted levels or the number of attempts is given in brackets.

How does it work?

First, the code generates a random number between ~9.7 million (first level 2.2's first level ID when unlisted access was added to more than just friends) and the last level's ID. If the level exists, then if it has more than 25 downloads and has a difficulty face, it's definitely not unlisted. Further, because Geometry Dash does not store in the level data its access, the code scans all levels on the author's account, and if there is no generated level there, then it is unlisted, after which all these actions are repeated again.

Why is the found level not displayed in Geometry Dash?

Most likely because the author set unlisted level access to friends only.

Some tips to help you watch the level:

How often unlisted levels can occur?

It's always different, it just depends on your luck, because in this code everything is based on random, but among 500 scanned levels (including non-existing ones) 32 unlisted levels were found, which means that for each generated number there is ~6.4% chance that the level exists and is unlisted. Which in turn is somewhere around 1 in 15 of the generated IDs. And if we translate it into time, then an unlisted level will occur every 7 seconds, if we consider that one request takes 0.5 seconds.

Why aren't any levels found when searching?

If you see a lot of red lines in the audit saying “Level [_] is not found”, this could mean that your computer cannot connect to the server. In most cases, the answer to this question comes out from going to https://gdbrowser.com/. If you see a Wraith with a lock on a dark purple background, it means that your IP has been blocked by GDBrowser, and this happened because you used the features on the site related to it too often. You can get around this by using a VPN or switching to a device with a different IP address. If the server returns an HTTP error, you can see the reason for this in the Wikipedia article.

On this page you can download all the source code I used and the source array with all the data and arrays with the statistics I gave in the video. This section will be of interest only to nerds who understand programming and JSON.

This is the page you are on right now, no explanation needed.


3. FAQ

This chapter will answer some questions you may have after browsing this site or reading the documentation.

Q: Who are you?

I am HeXi. A 14 year old shitty programmer/youtuber/creator from Russia. You may know me from such levels as LIMBO in 1.0, or if you watch Russian youtube, from such videos as “How to build a the hardest level”, “How I made a 3D level in a 2D game (translation)” or video just about this project.

Q: Will you be expanding the level database?

Unfortunately my IP was blocked on GDBrowser as written in the documentation before, so further expansion by me is not possible. For the same reason I can't currently compile statistics on accounts or comments, for example, because I can't view them through GDBrowser. Only if directly to the RobTop's servers.

Q: Will the site be updated in the future?

Probably yes.

Q: Will there be Russian localization of the site?

Some words are difficult to translate into Russian, such as “Stars requested”. So I decided to make the site in English.


My contacts:

Discord, Telegram, Donation Alerts, GD - hexihexi
YouTube, Telegram channel - hexigd
GitHub - hexique



Redaction 07.22.2025

~ GDLS