How do I compare edge and origin response codes in Cloudflare logs?

The Citead team, updated

In short. Compare EdgeResponseStatus and OriginResponseStatus within each request record, using cache, security and request-source fields to interpret the result.

Definition: As of 17 October 2026, Cloudflare's HTTP request logs distinguish EdgeResponseStatus, the status code Cloudflare returns to the client, from OriginResponseStatus, the status returned by the upstream server hosting the website. Comparing these fields in the same request record shows which response reaches a crawler and whether an origin response is recorded.

Key facts

  • Cloudflare's HTTP Requests field reference defines both status fields as integers and defines RayID as the request identifier.
  • Cloudflare's origin status FAQ explains that origin status 0 occurs with cache hits, Worker responses, security blocks, redirects and internal subrequests.
  • Cloudflare's request-source reference identifies eyeball as an end-user request and edgeWorkerFetch as a fetch made by a Worker, a script running on Cloudflare.

Which fields belong in the comparison?

A useful export keeps the requested URL and client information beside both status codes. In the field reference, ClientRequestURI includes the path and query string, while ClientRequestUserAgent contains the user agent reported by the client. EdgeStartTimestamp records when Cloudflare receives the request.

The following JSON fragment selects fields through output_options.field_names, the setting documented in Cloudflare's Log Output Options:

{
  "output_options": {
    "field_names": [
      "EdgeStartTimestamp",
      "RayID",
      "ClientRequestHost",
      "ClientRequestURI",
      "ClientRequestUserAgent",
      "ClientRequestSource",
      "EdgeResponseStatus",
      "OriginResponseStatus",
      "CacheCacheStatus",
      "SecurityAction",
      "SecurityRuleID",
      "WorkerSubrequest",
      "ParentRayID"
    ]
  }
}

This is a field-selection fragment. Updating a job replaces its entire output_options object, so an update must also preserve any existing options that should continue to apply, such as timestamp formatting or sampling.

How should response-code differences be investigated?

Start with the edge code for the crawler's request, then inspect the origin code in that record. Cloudflare's status-code guide states that an origin 5xx error is forwarded to the end user. An edge 522 indicates that Cloudflare cannot establish a TCP connection to the origin; 524 indicates an established connection without an HTTP response before the timeout.

For an edge 403, the same guide lists security features including the Web Application Firewall and Cloudflare challenges. The HTTP Requests reference defines SecurityAction and SecurityRuleID as the action and rule identifier associated with a terminating security action, if any. Those fields provide evidence of the rule involved when investigating crawler access.

What does an origin status of zero mean?

The field reference defines OriginResponseStatus=0 as no response received from the origin, with the response served by Cloudflare's edge, and explicitly includes a Workers-subrequest caveat. WorkerSubrequest identifies a Worker subrequest, and ParentRayID identifies its parent request.

Read CacheCacheStatus alongside that value. Cloudflare's cache-response documentation describes a cache hit as a resource found in Cloudflare's cache. It also explains that a custom firewall rule can block a request before it reaches cache, and a Worker can generate a response without making subrequests.

Cloudflare's origin status FAQ documents internal Early Hints cache lookups that return edge 504 on a cache miss. Its request-source reference supplies the corresponding ClientRequestSource value, earlyHintsCache. Separate these internal records before counting crawler failures.

FAQ

Does origin status zero mean Cloudflare blocked my crawler?

You need the surrounding fields to identify the cause. Cloudflare's origin status FAQ lists cache hits and Worker responses among the normal causes of origin status 0, alongside security blocks.

Which field shows the status returned to my crawler?

Use EdgeResponseStatus for the crawler's request record. Cloudflare's HTTP Requests reference defines it as the HTTP status code returned to the client.

Sources

  1. Cloudflare, "HTTP Requests", 14 September 2026
  2. Cloudflare, "504 responses with origin status 0 in Logpush", 23 April 2026
  3. Cloudflare, "ClientRequestSource field", 23 April 2026
  4. Cloudflare, "Log Output Options", 17 June 2026
  5. Cloudflare, "Status codes", 6 May 2026
  6. Cloudflare, "Cloudflare cache responses", 4 September 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark