What Is a JA4 Fingerprint?
Scrapeless Agent Browser provides cloud browser sessions for rendering dynamic pages and controlling browser workflows.
What Does a JA4 Fingerprint Measure?
A JA4 fingerprint is a structured summary of selected TLS ClientHello characteristics defined by FoxIO. It combines a readable prefix with hashed components so analysts can compare both an overall client pattern and parts of that pattern.
JA4 is one method within the wider JA4+ family. The TLS-client value should not be confused with HTTP, server, or other network fingerprints in that family. Name the particular method when storing or discussing a result; “JA4+” alone is too broad to identify the measured fields.
The JA4+ project specification describes the family and its intended use for network analysis. A fingerprint is a grouping signal. It does not provide proof of human activity, account ownership, or permission to perform an application action.
TL;DR
- JA4 measures a TLS-client handshake pattern. It does not measure page graphics or cookie contents.
- JA4 exposes meaningful components. Analysts can examine partial patterns rather than only an opaque digest.
- Sorting reduces selected order-related variation. Other changes can still alter the fingerprint.
- JA4H is a different observation. HTTP-client characteristics must not be mislabeled as a TLS JA4 result.
How Are the JA4 Sections Built?
JA4 builds its sections from a protocol and capability summary, a normalized cipher-list hash, and a normalized extension-and-signature-algorithm hash. The technical definition specifies the normalization rules, exclusions, and encoding.
The readable prefix describes the transport category, the TLS version represented by the algorithm, the presence of SNI, counts of offered ciphers and extensions, and an ALPN summary. SNI and ALPN are protocol features, so their representation should be read through the algorithm rather than guessed from a convenient label.
The cipher component sorts the included cipher identifiers before hashing. The extension component sorts included extension identifiers and incorporates signature algorithms in their observed order. SNI and ALPN are handled specially in the extension hash because information about them already appears elsewhere in the structure.
The JA4 TLS-client technical definition is the authority for those details. A collector should follow that specification consistently. Sorting all input fields indiscriminately would produce a different method, even if the result looked similar.
JA4 uses truncated SHA-256 outputs for its hashed components and excludes GREASE values under the specification's rules. The truncation is a compact representation choice. A readable prefix plus compact hashes is still a lossy summary of a richer handshake.
Why Does Normalization Matter?
Normalization matters because a client can vary the ordering of offered capabilities without changing the underlying set. A fingerprint that preserves every such order variation may split similar clients into many separate groups.
JA4 sorts selected lists to reduce that source of variation. This makes comparison useful in cases where ordering changes, while still retaining other distinctions. It does not mean that JA4 remains constant across every connection from the same application.
TLS GREASE behavior adds reserved values to exercise extensibility. A collection method needs to distinguish those values from stable capabilities. JA4's treatment of GREASE belongs to its normalization rules, not to a separate claim that changing protocol values indicate abuse.
Client updates, changed capabilities, configuration changes, and a different connection path can all affect a measurement. If a fingerprint changes after an update, inspect the raw observations before attributing the change to a new operator. Normalization reduces some differences; it does not erase all meaningful variation.
How Does JA4 Differ From JA3?
JA4 differs from JA3 in its input handling and representation. JA3 produces one MD5 digest from selected ordered fields. JA4 exposes a structured prefix and separately hashed normalized components. The values are not interchangeable.
| Dimension | JA3 | JA4 TLS Client |
|---|---|---|
| Representation | A digest of a delimited field sequence | A readable prefix and separate hashed components |
| Selected list order | Retained in the normalized input | Sorted for selected lists under the specification |
| Comparison | Often grouped by the complete digest | Can be analyzed by complete value or components |
| Identity claim | Does not authenticate a device | Does not authenticate a device |
Calling JA4 a newer approach does not make existing JA3 telemetry meaningless. Historical investigations may depend on JA3 values already recorded. A migration can collect both where appropriate, while preserving the algorithm label and avoiding comparisons between unlike values.
A JA3 digest cannot generally be converted into JA4 because the digest does not contain the underlying ClientHello data. If you need both methods, obtain the appropriate raw observation and calculate each through its own defined process.
JA4, JA4H, and JavaScript Fingerprints
JA4, JA4H, and JavaScript fingerprints describe different observable behavior. JA4 describes TLS-client handshake characteristics. JA4H belongs to HTTP-client fingerprinting. JavaScript fingerprints describe browser properties and execution visible to page code.
A security platform may correlate all of them, but a diagnostic tool should report which measurements it actually collected. A browser test that reads screen dimensions has not thereby measured a TLS ClientHello. A proxy log that records a handshake has not inspected the rendered page.
This distinction also explains why a changed User-Agent does not control the whole connection identity. HTTP headers are produced after the handshake on a TLS connection. A client can claim one browser family in a header while its networking implementation produces a different pattern.
Even a coherent collection of signals cannot establish user intent with certainty. The same browser build can support a person reading a page, an approved test, or an unwanted automated workload. Application policy and authorization still require their own evidence.
Where Can You Obtain a Trustworthy JA4 Measurement?
A trustworthy JA4 measurement comes from a component that can observe the relevant ClientHello and apply the specified algorithm. That component may be an edge service, a network sensor, or a diagnostic endpoint you control.
Identify the measured hop. A TLS-terminating gateway creates a separate connection to an origin, so the origin may observe the gateway's TLS client rather than the original browser. A pass-through tunnel can preserve the original client handshake. Routing and termination are separate questions.
The TLS handshake model provides the protocol context for these observations. It also explains why an application running behind termination infrastructure may need trusted metadata from that infrastructure instead of attempting to reconstruct the handshake from ordinary request headers.
Store the observation point, collection version, time, and relevant client environment with the result. If infrastructure passes a fingerprint in a header, ensure that untrusted callers cannot supply or overwrite that header. A claimed fingerprint is different from a measured one.
A Controlled JA4 Investigation
A controlled JA4 investigation compares connection observations with application outcomes while changing a clearly identified variable. It should resolve a specific question, such as whether a client update altered its offered capabilities.
- Choose an authorized observation endpoint. Confirm that it sees the connection you intend to measure.
- Record the browser and route. Include relevant versions and whether TLS is terminated by an intermediary.
- Retain explanatory data. Where appropriate, keep normalized field details so a component change can be investigated.
- Compare components deliberately. A stable prefix with a changed hash has a narrower meaning than an entirely changed observation.
- Check the returned content. Verify that the application result satisfies the permitted task. A familiar JA4 value does not certify extraction success.
For browser-based collection, the Agent Browser documentation describes the managed browser scope. The Scrapeless Agent Browser product supplies a browser runtime, while your validation logic determines whether the desired page and fields arrived. Avoid assuming undocumented controls for assigning a particular JA4 value.
The related Node.js browser fingerprint workflow is useful context for browser-based automation. Compare Scrapeless pricing with your measured workload and content quality rather than treating a fingerprint match as the final acceptance criterion.
Conclusion
JA4 gives analysts a structured view of selected TLS-client characteristics and reduces certain order-related variations. Use its components to explain observations, retain the measurement context, and distinguish it from HTTP and JavaScript fingerprints. The fingerprint supports an investigation; the application's authorization and usable response remain separate decisions.
Build a Workflow You Can Validate
Choose the Scrapeless service that fits your permitted data source, then check the returned content against the fields your application needs.
Sign up today and get $5 in free credit — no credit card required.
Claim Your $5 Credit →FAQ
Q: Is JA4 a unique device ID?
JA4 is not a unique device ID. Multiple clients can share a handshake pattern, and one client's pattern can change with its environment.
Q: Is JA4 the same as JA4H?
JA4 TLS-client fingerprinting and JA4H HTTP-client fingerprinting measure different layers. Preserve the method name with each recorded value.
Q: Can a JA3 hash be converted to JA4?
A JA3 hash generally cannot be converted to JA4 because it does not preserve the underlying handshake fields. Calculate each method from an appropriate observation.
Q: Does a matching JA4 guarantee web access?
A matching JA4 does not guarantee access. A destination can apply other request, session, identity, and application policies.