Benchmark report

GitLab thumbnail

Is the GitLab API slow?

Response times from 5 cities

Slow from some locations

No city came in under 200 ms: Montreal was quickest at 211 ms and Singapore slowest at 395 ms. Most of that wait is present everywhere, so distance explains only part of it.

Fastest
211 ms
Montreal
Slowest
395 ms
Singapore
Successful requests
100%
5 of 6 locations

Response time around the world

Amsterdam 265ms typicalSan Francisco 234ms typicalMontreal 211ms typicalSingapore 395ms typicalTokyo 379ms typicalMumbai —
  • CanadaMontreal
    211 ms
  • United StatesSan Francisco
    234 ms
  • NetherlandsAmsterdam
    265 ms
  • JapanTokyo
    379 ms
  • SingaporeSingapore
    395 ms
  • IndiaMumbai
    Collecting since 7 Sept 2026

Why is no city under 200 ms?

In the controlled run of 7 September connecting and the TLS handshake took 12 to 26 ms in every city and the download 0 to 3 ms. The rest was waiting for the first byte: 203 ms in San Francisco, 206 ms in Montreal, 255 ms in Amsterdam, 364 ms in Tokyo and 367 ms in Singapore. All five cities connected to the same Cloudflare address and the cache header named a nearby point of presence, so the wait is the trip from that edge to GitLab plus the time GitLab spends on the request. With no city below 200 ms even from the nearest edge, a good part of that wait appears to be the request itself rather than distance.

Click the location to see each stage.

ConnectTLSServer waitDownload
SingaporeSingapore
391 ms
Finding the server
2 ms
Reaching the server
4 ms
Setting up security
17 ms
Waiting for the server: most of the time
367 ms
Receiving the response
3 ms
Total
391 ms

Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.

Bars show the typical request, so the parts add up to its total. Why

Compare all locations

Click a city to see its stage-by-stage breakdown.

ConnectTLSServer waitDownload
NetherlandsAmsterdam
281 ms
Finding the server
1 ms
Reaching the server
11 ms
Setting up security
15 ms
Waiting for the server: most of the time
255 ms
Receiving the response
0 ms
Total
281 ms
United StatesSan Francisco
217 ms
Finding the server
11 ms
Reaching the server
4 ms
Setting up security
10 ms
Waiting for the server: most of the time
203 ms
Receiving the response
0 ms
Total
217 ms
CanadaMontreal
221 ms
Finding the server
1 ms
Reaching the server
3 ms
Setting up security
12 ms
Waiting for the server: most of the time
206 ms
Receiving the response
0 ms
Total
221 ms
SingaporeSingapore
391 ms
Finding the server
2 ms
Reaching the server
4 ms
Setting up security
17 ms
Waiting for the server: most of the time
367 ms
Receiving the response
3 ms
Total
391 ms
JapanTokyo
377 ms
Finding the server
1 ms
Reaching the server
2 ms
Setting up security
10 ms
Waiting for the server: most of the time
364 ms
Receiving the response
1 ms
Total
377 ms

The phases come from the controlled run of 7 September 2026. Typical times pool daily requests; slower times use controlled full runs. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.

Finding the server is measured once per location, so it sits outside these bars. Open a city to see it.

Bars show the typical request, so the parts add up to its total. Why

GitLab still feels slow?

Check GitLab’s status page
API and platform incidents are posted there before they show up in a benchmark.
This is not a git or CI benchmark
git over HTTPS, CI runners, the container and package registries, GraphQL and the signed-in application are not measured here.
Nothing is cached
One Cloudflare address for all five cities, each answered from a nearby point of presence (London for Amsterdam). The response is private, so every call waits for GitLab. Montreal and San Francisco had the shortest waits, which suggests GitLab's origin is in North America.

Response time over the last 30 days

Daily median of 5 requests per location, 13 August 2026 to 12 September 2026.
05001000 ms13 Aug12 Sept5 locations joinedMumbai joined
Show the numbers
DayAmsterdamSan FranciscoMontrealSingaporeTokyoMumbai
28 August 2026237 ms194 ms176 ms357 ms275 ms
29 August 2026231 ms195 ms142 ms339 ms285 ms
30 August 2026224 ms320 ms187 ms334 ms312 ms
31 August 2026265 ms201 ms193 ms378 ms263 ms
1 September 2026211 ms195 ms235 ms341 ms291 ms
2 September 2026259 ms226 ms203 ms379 ms491 ms
3 September 2026271 ms274 ms204 ms394 ms450 ms
4 September 2026260 ms238 ms188 ms449 ms399 ms
5 September 2026257 ms245 ms313 ms403 ms373 ms
6 September 2026276 ms218 ms286 ms403 ms371 ms
7 September 2026309 ms233 ms317 ms450 ms437 ms482 ms
8 September 2026272 ms226 ms218 ms388 ms393 ms472 ms
9 September 2026256 ms418 ms248 ms390 ms381 ms477 ms
10 September 2026262 ms238 ms197 ms421 ms385 ms479 ms
11 September 2026278 ms234 ms198 ms413 ms367 ms446 ms
12 September 2026287 ms227 ms185 ms420 ms374 ms498 ms

About this measurement

GET gitlab.com/api/v4/projects/278964 · 70 requests per location over 14 daily runs · 30 August 2026 to 12 September 2026

What we tested · API response. GET /api/v4/projects/278964 (gitlab-org/gitlab): 1.2 KB of JSON, no token, behind Cloudflare but marked private so every request reaches GitLab.

How LatencyRadar measures response time →

Technical details

Doesn’t measure: Authenticated calls, git over HTTPS, CI runners, or the gitlab.com site.

One GitLab surface: the REST API's project record for gitlab-org/gitlab, 1.2 KB of JSON fetched without a token. The response is marked private, so Cloudflare passes every request through to GitLab, and the number is the cost of an unauthenticated API call as a CI script or integration would make it. It does not stand for git over HTTPS, for authenticated calls, which have their own rate limits, or for the gitlab.com website.

Not measured: git clone, fetch and push, CI runners and job queues, the container and package registries, GraphQL, or the signed-in application. From outside we cannot separate the round trip from Cloudflare's edge to GitLab's origin from the time GitLab spends assembling the record; the wait we report contains both.

Between 30 August and 12 September 2026 the typical time ranged from 211 ms in Montreal to 395 ms in Singapore, with San Francisco at 234 ms, Amsterdam at 265 ms and Tokyo at 379 ms. The daily medians drifted upward during the window. Amsterdam ran at 211 to 265 ms until 1 September and at 256 to 309 ms from 2 September; Singapore moved from 334 to 378 ms up to 379 to 450 ms, and Tokyo from 263 to 312 ms up to 367 to 491 ms, on the same dates. We cannot see from outside what changed on 2 September. For the same kind of unauthenticated call to another code host, see the GitHub API page, measured on the same days; its numbers are set by distance to the address each city was given, while these carry a wait that is present in every city.

Test locationTypical response timeSlower response timeRequests
Amsterdam265 ms304 ms20
San Francisco234 ms286 ms20
Montreal211 ms263 ms20
Singapore395 ms415 ms20
Tokyo379 ms400 ms20
MumbaiCollecting since 7 Sept 2026

Typical: half of the requests finished within this time (technical: p50). Slower: 95% of requests finished within this time (technical: p95). Statistics

Request
GET gitlab.com/api/v4/projects/278964
Measured from
Amsterdam · San Francisco · Montreal · Singapore · Tokyo
Requests
Daily measurements from 30 August 2026 to 12 September 2026. 5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo. · 30 August 2026 to 12 September 2026
Timings taken
DNS, connect, TLS, waiting for the server, download
Report coverage
5 of 6 test locations included: Amsterdam, San Francisco, Montreal, Singapore, Tokyo.
Daily requests in each location
Amsterdam: 70 · San Francisco: 70 · Montreal: 70 · Singapore: 70 · Tokyo: 70
Typical response time
Median of the eligible daily requests in each included location.
Slower response time
Median of recent controlled full-run p95 values in each included location.

GitLab REST API

https://gitlab.com/api/v4/projects/278964

Independent measurement by LatencyRadar. Not affiliated with GitLab. · How we measure (v1.1)

How fast is your API around the world?

Run a free speed test from multiple cities and find out where your users are waiting. No setup, no account required.

Test my API

No account required · Takes about 30 seconds.

More benchmarks

All benchmarks →