What’s New — July 2026
June’s biggest change was the overhaul of how measurement results are presented and processed. Alongside the new raw-results experience, we also improved measurement completion under load, tightened account and probe handling, and continued consolidating Globalping services around a more consistent deployment stack.
Faster, richer measurement results
The Globalping website’s table view became much more capable: all measurement types can now use table mode, with clearer DNS and HTTP failure states. Large measurements also render dramatically faster — a 500-probe, two-target measurement dropped from roughly 9 seconds to 3 seconds to load, while live-result delays fell from potentially minutes to under two seconds. (globalping.io#182, globalping.io#172, globalping.io#171)
Better failure diagnostics and timeout control
Failed measurements can now distinguish whether an error originated with the target, DNS resolver, or Globalping itself. Measurements also gained configurable timeout handling across the API and probe stack, making long-running tests easier to control and failures easier for clients to interpret. (globalping#879, globalping-probe#385, globalping#882, globalping-probe#388)
A more responsive API under load
Several backend bottlenecks were addressed together: credit operations are cached more efficiently, obvious rate-limit failures can be rejected earlier, IP-range lookups are faster, and probe synchronization causes substantially less event-loop blocking. Together, these changes improve API responsiveness and scalability under heavier traffic. (globalping#863, globalping#873, globalping#872, globalping#875)
Stronger probe-network quality controls
New safeguards make credit farming harder by limiting redundant probes from the same user, network, and location. Probe handling around alternative IPs was tightened as well, while probe hosts with insufficient RAM or storage now receive explicit warnings before resource limitations prevent automatic updates. (globalping#857, globalping-probe#380, globalping-probe#373)
Easier probe discovery and filtering
Probe search became more expressive and forgiving. System-tag prefixes are indexed, ASN searches recognize the familiar AS prefix, and the dashboard can combine multiple conditions when filtering the probe table. (globalping#888, globalping-dash-directus#182, globalping-dash#208)
Better developer tooling
The API’s OpenAPI documentation and discovery were improved, while the TypeScript client gained cancellable awaitMeasurement() calls and fixes to its exported types and declarations across module formats. (globalping#881, globalping-typescript#8, globalping-typescript#5, globalping-typescript#6)
Smoother website workflows
The target field now handles protocol-less URLs such as x.dev/path?q more naturally. Measurement sharing and URL state were also cleaned up alongside several homepage interaction fixes. (globalping.io#181, globalping.io#183)
Full Changelog
globalping
- feat: credits farming anti abuse — globalping#857
- feat: add failureSource — globalping#879
- feat: improve OpenAPI docs and discovery — globalping#881
- feat: add measurement timeout option — globalping#882
- feat: add system tag prefixes to index — globalping#888
- fix: allow null latency stats in MTR results — globalping#858
- fix: use fresh promise to build ipKey index — globalping#867
- fix: clarify rate limit errors — globalping#874
- fix: run measurement timeout cleanup more often — globalping#880
- fix: avoid leading newlines in timeout output — globalping#884
- perf: cache credits reads and writes — globalping#863
- perf: use ip-range-list for range lookups — globalping#872
- perf: precheck rate limit — globalping#873
- perf: reduce event loop delays — globalping#875
- docs: clarify probe hosting rules — globalping#885
globalping.io
- feat: show DNS and HTTP error states in results — globalping.io#172
- feat: double maximum sponsorship donation amounts — globalping.io#179
- feat: improve target input UX with URLs — globalping.io#181
- feat: support table mode for all measurement types — globalping.io#182
- fix: remove packets flag from infinite CLI command — globalping.io#174
- fix: improve set-location button hover behavior — globalping.io#176
- fix: various homepage issues — globalping.io#183
- perf: optimize table output loading — globalping.io#171
- refactor: use ip-range-list for anycast lookups — globalping.io#180
globalping-probe
- feat: add RAM warning — globalping-probe#373
- feat: report failure source for failed measurements — globalping-probe#385
- feat: add measurement timeout option — globalping-probe#388
- fix: use null for missing mtr timing stats — globalping-probe#374
- fix: prevent stale alternative IP reports — globalping-probe#380
- fix: trim MTR hops the same way as rawOutput — globalping-probe#384
- fix: correct MTR resolved address and hostname — globalping-probe#386
- fix: allow unknown measurement options — globalping-probe#389
- fix: avoid leading newlines in timeout output — globalping-probe#393
- docs: clarify probe hosting rules — globalping-probe#394
globalping-typescript
- feat: support aborting awaitMeasurement — globalping-typescript#8
- fix: export PingProtocol type — globalping-typescript#5
- fix: add CJS and UMD TS declarations — globalping-typescript#6
- docs: fix README examples — globalping-typescript#4