Observă
Examines how the page behaves before any consent choice is made.
Scanare tehnică & confidențialitate Platformă publică
onGDPR.md inspects the public surface of a website: cookies, trackers, forms and the notices it publishes. The report ties every finding to the evidence observed, and states what could not be checked.

onGDPR.md
Examines how the page behaves before any consent choice is made.
Tests the refusal, and checks which requests and mechanisms stay active.
Organises the findings, the evidence and the limits into a report for the team.
Cookies, trackers, and how the consent mechanisms behave.
Prioritised issues, and information the people who maintain the website can act on.
Analyses of how sites behave, with the methodology and the limits published.
A technical scan supports preparation for compliance. It is not a legal certification and it does not replace a full analysis of an organisation's processes.
onGDPR.md in detail
A site's privacy policy says what ought to happen. onGDPR.md measures what actually happens: what loads before the visitor has had the chance to choose anything, what stays active after they press "Reject all", what the notice does and does not say, and where the data goes. You enter an address and get a score from 0 to 100, a verdict, and findings with their evidence.
The engine is deterministic. There is no language model anywhere in the path of the score: the same inputs give the same result, and every finding points to an article of Law no. 195/2024 that has been checked against a registry of the law's 90 articles. An article we cannot confirm in the text of the law is never printed.
Law no. 195/2024 has been in force since 23 August 2026 and repeals Law no. 133/2011. Penalties run up to 2,000,000 Moldovan lei (MDL) or 2% of turnover, and the supervisory authority is the National Centre for Personal Data Protection (CNPDCP). Which regime applies is not assumed in the code, it is computed from the date of the scan.
The scanner finds the banner, actually presses the reject control, and then listens to the network traffic for three seconds. A tracker counts as a violation only if it was already firing before any consent and keeps firing after the refusal, with no signal that consent was denied. A site correctly running Google Consent Mode v2, with denial as the default, is not punished for its cookieless pings — that rule was added deliberately, so as not to contradict the check that rewards exactly that behaviour.
Transport — forced HTTPS, HSTS, CSP, mixed content, cookie attributes, security headers. Cookies — trackers and non-essential cookies before consent, tracking storage. Consent management (CMP) — whether the banner is there, whether a reject control exists, equal weight between accept and reject, pre-ticked options, withdrawal of consent, and the behavioural test. Notice — twelve content elements, from purposes and legal basis through to the CNPDCP and the date it was last updated. Forms, jurisdiction and controller identity complete the list.
Eighteen selectors for known consent management platforms, each with its source cited, plus a generic heuristic for hand-written banners — very common among small companies in Moldova — which reads the computed styles from the live page, not the static HTML. The walk descends into open shadow DOM and into iframes, because some banners live entirely in there. Closed shadow roots stay invisible by construction: we say so openly, and we have a test that holds us to it.
Cookies 0.25, the consent mechanism 0.20, the notice 0.20, transport 0.15, forms 0.08, jurisdiction 0.07, controller identity 0.05 — summing to exactly 1.0. A failing finding subtracts from its own category in proportion to severity: critical 1.0, high 0.6, medium 0.3, low 0.15; a warning costs half. Above 80 is compliant, above 50 is at risk, below that is non-compliant.
A single failing critical finding forces a verdict of "non-compliant" and caps the score at 49, whatever the weighted formula would otherwise say. The reason is simple: trackers firing before consent, or a reject button that stops nothing, are happening right now to every visitor. A flawless notice must not be able to pull the average up over that.
A budget of 45 seconds per scan. A user agent of our own, which identifies itself and points to the page explaining the scan and how to opt out. The target site's robots.txt is honoured by default, through a separate fetch capped at 8 seconds, so that a slow robots.txt cannot eat into the audit's budget. Before any request, a guard blocks internal addresses, the local network, and the cloud metadata endpoint.
Data and operation
From exploration to deployment
The home page shows the default behaviour, but forms, campaign pages and areas with embedded content often carry different trackers. We agree which addresses matter, and under what conditions they are tested.
The findings are written to be actionable by whoever maintains the site: which host, which cookie, which header, which element of the notice is missing. We separate what was observed from what needs context held inside the organisation.
The score is not a legal opinion and it does not calculate any fine. The basis for processing, the contracts with processors, the record of processing activities and the impact assessment are legal and organisational decisions. The report prepares the ground with evidence; the conclusion is the lawyer's to draw.
After changes, exactly the same scenario is run again. A comparison only means something between two scans made the same way — otherwise you are comparing a site with a day, not with itself.
No. It is a technical measurement of the site's public surface, with evidence and with the limits of each finding stated. Many of the law's obligations — the basis for processing, contracts with processors, the record of processing activities, the impact assessment, informing employees — cannot be observed from outside and do not appear in the report. The score is not a legal opinion and it does not calculate any fine.
The scanner finds the banner, presses the reject button, and listens to network requests for three more seconds. A tracker is flagged only if it was already firing before consent and carries on after the refusal, with no denial signal in the request. It is the only check in the engine that needs a live, interactive browser rather than a static snapshot of the page — and it is the reason a scan takes seconds rather than milliseconds.
No. The engine is deterministic: the same inputs give the same score, and every weight and every threshold sits in a single constants file, not scattered through the code. There is an assistant that explains the report to you, and that one is a language model — but it recomputes nothing, and if it cites an article we cannot confirm in the text of the law, its answer is not shown.
No. It means the public surface that was tested behaves well in the scenarios that were tested. An organisation can have a flawless site and no record of processing activities at all. It works better the other way round: a poor score almost certainly points to a real problem, because the checks that cut deepest — trackers before consent, a refusal that stops nothing — describe something happening right now to every visitor.
It is a single visit, like an ordinary visitor's, with a maximum budget of 45 seconds. The user agent identifies itself and points to the page explaining the scan and how to opt out, and the site's robots.txt is honoured by default. No forms are submitted, no accounts are created, and no sign-in is attempted.
A banner hidden inside a closed shadow root stays invisible by construction — we declare it, and we have a test that holds us to our word. Nor do we see what happens after sign-in, what the server does with the data from a submitted form, where that data goes next, or what the contracts provide for. The report states what it was able to observe and what it was not, and when the page did not render properly it withholds the verdict rather than inventing one.
There is a registry of the 90 articles of Law no. 195/2024, carrying the MD5 fingerprint of the source document. An article that is not in the registry is not printed. And if a text attributes a reference to another instrument — Regulation (EU) 2016/679, say — it is recognised as such, not declared invented. The two errors are not symmetrical: a true citation wrongly rejected simply disappears, with nothing left looking broken.
195/2024, since 23 August 2026. The code does not assume this, it computes it from the date of the scan: before that date, 133/2011 was the one in force and 195/2024 was reported as something to prepare for; afterwards, the other way round. An older report therefore stays readable under its own regime, without pretending it once said something else.
Illustrative example
A usage scenario, with no client data and no commercial results attributed.
The site's public address. Nothing else — no access, no account, no code to put in the page.
The address goes through the anti-SSRF guard, then robots.txt. A real Chromium loads the page and everything requested before any interaction is recorded. The banner is looked for — among 18 selectors for known CMPs, then heuristically, including inside open shadow DOM and iframes. The refusal is pressed and the network is listened to for three more seconds. In parallel, the other six modules run: headers, cookies, notice, forms, jurisdiction, controller.
A score from 0 to 100, a verdict, and the findings with the evidence behind each one, the article of the law checked against the registry, and the classification — observed, inferred, needs context, not testable. If a tracker was firing before consent and carried on after the refusal, the verdict is non-compliant and the score is capped at 49, however good the notice may be.
Ce este necesar:O adresă publică accesibilă, care nu blochează robotul din robots.txt. Raportul acoperă suprafața și scenariile testate; procesele interne, contractele și temeiurile prelucrării rămân o evaluare juridică separată.
Ways of working together
An inventory of how sites, cookies and external requests behave, as technical support for IT teams and data protection officers.
We define a pilot around one real process: users, data, integrations, costs and acceptance criteria. Expansion follows once the result has been assessed.
We establish the requirements for accessibility, hosting, data protection and interoperability. Any connection to services run by Moldova's e-Governance Agency (AGE) or its state information-technology service (STISC) requires eligibility, access and approvals to be validated.
These are adaptation scenarios, not statements about existing contracts or partnerships. The proposed capabilities are confirmed within the project's scope of work.
Discută un pilotsesizari.md organizează sesizările despre spațiul public: loc, categorie, descriere și materiale relevante.
Platformă publicăMEGA QR include un generator de coduri și un instrument de transfer optic.
Instrument publicMegaforms explorează colectarea de răspunsuri prin formulare conversaționale, inclusiv răspunsuri vocale și transcriere.
Dezvoltare & demonstrațiiTell us about your process. Together we decide what is worth building, what we can connect, and how we check the result.