Skip to main content

Parity check

Same answer as the Commission calculator.

Each fixed scenario runs through Ninety and through the European Commission's own short-stay calculator script. The result first shown comes from a stored, SHA-256-checked copy of that script. The server then tries the live Commission page, and the result is replaced only if the live page loads as the calculator. The labels below say which copy you are looking at. From Vercel's servers the live page often does not load, and then the stored copy stays.

Result

match

Scenarios matched

14/14 match

Reference

European Commission short-stay calculator

Stored official copy (checking the live page now…)

Checked against the stored official copy (SHA-256 bd538a7d744ce090cb110b3c0bb0eaf4e65cb9b6ad1ec7cc0bb923d3d1ce4513, fetched 2026-10-19 from https://ec.europa.eu/assets/home/visa-calculator/calculator.htm). The live Commission page is being checked now.

Ninety and the Commission calculator, scenario by scenario
#ScenarioChecked onNinetyEC calculatorMatch
01No previous stay0 staysNinety: latest legal day 2024-08-29. Calculator: Possible stay until 29/08/242024-06-0190 left90 leftMatch
02Manual example: 14 Jun 20242 staysNinety: latest legal day 2024-08-29. Calculator: Possible stay until 29/08/242024-06-1476 left76 leftMatch
03Manual example: entry on 19 Jun 20243 staysNinety: latest legal day 2024-07-08. Calculator: Possible stay until 08/07/242024-06-1920 left20 leftMatch
04Manual example: entry on 7 Aug 20243 staysNinety: latest legal day 2024-08-26. Calculator: Possible stay until 26/08/242024-08-0720 left20 leftMatch
05Manual example: last legal day, 29 Aug 20242 staysNinety: latest legal day 2024-08-29. Calculator: At 29/08/24 a stay may be authorized for 0 days2024-08-290 left0 leftMatch
06Calculator's built-in example3 staysNinety: latest legal day 2014-05-21. Calculator: Possible stay until 21/05/142014-03-1567 left67 leftMatch
07Same-day stay1 stayNinety: latest legal day 2025-01-24. Calculator: Possible stay until 24/01/252024-10-2789 left89 leftMatch
08Day after the spring clock change1 stayNinety: latest legal day 2024-06-27. Calculator: Possible stay until 27/06/242024-04-0188 left88 leftMatch
09Same-day exit and re-entry2 staysNinety: latest legal day 2024-07-29. Calculator: Possible stay until 29/07/242024-05-1278 left78 leftMatch
10Exactly 90 days1 stayNinety: latest legal day 2024-03-30. Calculator: At 30/03/24 a stay may be authorized for 0 days2024-03-300 left0 leftMatch
11Day 91 (overstay)1 stayNinety: overstay 2024-03-31 to 2024-03-31, 1 day (window 2023-10-04 to 2024-03-31: 91 days). Calculator: Overstay in the period from 31/03/24 to 31/03/24 (1 days)2024-03-311 overstay1 overstayMatch
12Re-entry after a full 90 days1 stayNinety: latest legal day 2024-09-28. Calculator: Possible stay until 28/09/242024-07-0190 left90 leftMatch
13Entry refused the next day1 stayNinety: entry refused. Calculator: A stay may not be authorised.2024-03-310 left0 leftMatch
14Overstay through 15 Apr1 stayNinety: overstay 2024-03-31 to 2024-04-15, 16 days (window 2023-10-19 to 2024-04-15: 106 days). Calculator: Overstay in the period from 31/03/24 to 15/04/24 (16 days)2024-04-1516 overstay16 overstayMatch

Every field the calculator prints

399/400 scenarios match the Commission calculator on every field

412 scenarios were compared with stored output from the Commission script (seed 20261020). 400 are inputs the form accepts and calculates. 1 accepted input does not match, and is listed below. 12 more are outside that form. They are listed too, and they are not part of the 400. The visa-sticker sentence is printed only beside “Possible stay until”, and the words do not change, so it is not one of the compared fields. Days used on the control date are printed only inside an overstay window. An open stay is typed into the form as ending on the control date, because the form requires an exit.

Compared fields: days left, start of the 90-day period, start of the 180-day period, possible stay until, last legal day (0 days left), entry refused, next date a stay is allowed, and for how many days, overstay window and length, length of each stay, refusal, when the script refuses an exit-before-entry stay. This page judges the stored output. It does not re-run all 412 scenarios. The test re-runs the vendored script and fails if the stored output changes.

How many scenarios in each group match the calculator
GroupMatchedAccepted by the formTotal
existing-14141414
commission-example111113
outside-domain0010
leap242424
exact-91151515
exact-90252525
dst242424
ees-cutoff777
overlap566
open-stay999
same-day666
year-boundary121212
long-history444
refusal111
early-rule222
random240240240
  • kom-1-4 Outside the calculator

    Built-in example KOM 1.4 uses 2012 stays. The script refuses any stay before 22 April 2013.

    calculation. Calculator: Calculation of stay is not possible. Ninety: counted, 77 days used, 13 left.

    Calculator, control: Calculation of stay is not possible

    Calculator, planning: Calculation of stay is not possible

  • kom-overstay-3 Commission quirk

    Built-in example Overstay 3 lists a March 2013 stay after a September stay, and that March stay is before 22 April 2013.

    sort dialog. Calculator: Declining the sort dialog does not advance the loop in sortCron, so the script never finishes.. Ninety: 179 days used, 0 left.

  • kom-inconsistance-1 Outside the calculator

    Built-in example Inconsistance 1 has a valid stay and a reversed one. The script refuses the whole form. Ninety rejects the reversed trip and still counts the valid one.

    calculation. Calculator: The stay with entering date 16/06/14 is later than the exit date 19/03/14 | Calculation of stay is not possible. Ninety: rejected (Trip 2 ends before it starts.).

    Calculator, control: The stay with entering date 16/06/14 is later than the exit date 19/03/14 / Calculation of stay is not possible

    Calculator, planning: The stay with entering date 16/06/14 is later than the exit date 19/03/14 / Calculation of stay is not possible

  • overlap-overstay-two-trips Commission quirk

    The script does not reject an overlap of the first two rows, then prints one overstay per row: 31 Mar–5 Apr (6 days) and 31 Mar–10 Apr (11 days). The 6 days sit inside the 11. Ninety lists those 11 days once.

    overstay count. Calculator: 2: 2024-03-31 to 2024-04-05 (6 days), window 2023-10-09 to 2024-04-05: 96 days | 2024-03-31 to 2024-04-10 (11 days), window 2023-10-14 to 2024-04-10: 101 days. Ninety: 1: 2024-03-31 to 2024-04-10 (11 days), window 2023-10-14 to 2024-04-10: 101 days.

    Calculator, control: Days of stay in the 180-days period from 09/10/23 to 05/04/24: 96 day(s) / Overstay in the period from 31/03/24 to 05/04/24 (6 days) / Days of stay in the 180-days period from 14/10/23 to 10/04/24: 101 day(s) / Overstay in the period from 31/03/24 to 10/04/24 (11 days)

    Calculator, planning: Days of stay in the 180-days period from 09/10/23 to 05/04/24: 96 day(s) / Overstay in the period from 31/03/24 to 05/04/24 (6 days) / Days of stay in the 180-days period from 14/10/23 to 10/04/24: 101 day(s) / Overstay in the period from 31/03/24 to 10/04/24 (11 days)

  • overlap-second-and-third Outside the calculator

    The second and third stays overlap. The script rejects that pair and does not calculate.

    calculation. Calculator: The stay with entering date 10/03/24 is before exit date in the previous stay 20/03/24 | Calculation of stay is not possible. Ninety: counted, 40 days used, 50 left.

    Calculator, control: The stay with entering date 10/03/24 is before exit date in the previous stay 20/03/24 / Calculation of stay is not possible

    Calculator, planning: The stay with entering date 10/03/24 is before exit date in the previous stay 20/03/24 / Calculation of stay is not possible

  • overlap-all-three-rows Outside the calculator

    The third stay overlaps the second, so the script rejects the form.

    calculation. Calculator: The stay with entering date 25/03/24 is before exit date in the previous stay 28/03/24 | Calculation of stay is not possible. Ninety: counted, 36 days used, 54 left.

    Calculator, control: The stay with entering date 25/03/24 is before exit date in the previous stay 28/03/24 / Calculation of stay is not possible

    Calculator, planning: The stay with entering date 25/03/24 is before exit date in the previous stay 28/03/24 / Calculation of stay is not possible

  • refusal-second-trip-reversed Outside the calculator

    One reversed trip makes the script refuse the whole form, including the valid trip beside it. Ninety rejects the reversed trip and still counts the valid one.

    calculation. Calculator: The stay with entering date 10/03/24 is later than the exit date 01/03/24 | Calculation of stay is not possible. Ninety: rejected (Trip 2 ends before it starts.).

    Calculator, control: The stay with entering date 10/03/24 is later than the exit date 01/03/24 / Calculation of stay is not possible

    Calculator, planning: The stay with entering date 10/03/24 is later than the exit date 01/03/24 / Calculation of stay is not possible

  • outside-before-22-apr-2013 Outside the calculator

    The script refuses stays before 22 April 2013. Ninety has no such cutoff.

    calculation. Calculator: Calculation of stay is not possible. Ninety: counted, 5 days used, 85 left.

    Calculator, control: Calculation of stay is not possible

    Calculator, planning: Calculation of stay is not possible

  • outside-exit-after-control Outside the calculator

    The exit is after the control date. The script refuses. Ninety counts the stay.

    calculation. Calculator: The exit date 20/05/24 is later than the Entry/Control date 10/05/24 | Calculation of stay is not possible. Ninety: counted, 10 days used, 80 left.

    Calculator, control: The exit date 20/05/24 is later than the Entry/Control date 10/05/24 / Calculation of stay is not possible

    Calculator, planning: The exit date 20/05/24 is later than the Entry/Control date 10/05/24 / Calculation of stay is not possible

  • outside-control-during-a-stay Outside the calculator

    A control date in the middle of a stay is an exit after the control date, which the script refuses.

    calculation. Calculator: The exit date 30/06/24 is later than the Entry/Control date 15/06/24 | Calculation of stay is not possible. Ninety: counted, 15 days used, 75 left.

    Calculator, control: The exit date 30/06/24 is later than the Entry/Control date 15/06/24 / Calculation of stay is not possible

    Calculator, planning: The exit date 30/06/24 is later than the Entry/Control date 15/06/24 / Calculation of stay is not possible

  • outside-unsorted Commission quirk

    Stays are not in entry order. The script asks to sort them; the reference run declines, as the page's confirm dialog would when answered no.

    sort dialog. Calculator: Declining the sort dialog does not advance the loop in sortCron, so the script never finishes.. Ninety: 20 days used, 70 left.

  • outside-51-stays Outside the calculator

    The form has 50 stay rows. A 51st stay is not read.

    days left. Calculator: 56. Ninety: 55.

    possible stay until. Calculator: 2024-08-14. Ninety: 2024-08-13.

    length of each stay. Calculator: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, blank. Ninety: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.

    Calculator, control: No overstay in the registration period. / Possible stay until 14/08/24 / For holder of a short stay visa, remember to check the number of days on the visa sticker or in the VIS

    Calculator, planning: Start of 90 days period: 23/03/24 / Start of 180 days period: 24/12/23 / The stay may be authorised for up to: 56 day(s)

  • outside-future-open-stay Outside the calculator

    An open stay that starts after the control date. The form cannot store an empty exit, and Ninety rejects a trip that starts after today with no exit.

    input. Calculator: The form requires an exit for every stay.. Ninety: Trip 1 starts after 2024-07-01 and has no exit date..

Live sample

Checking a sample on the live Commission page…

Boundary cases worked out by hand

Each answer was written down before either calculator ran, and each case is a different situation. The check also requires the calculator to print the quoted sentences word for word. One answer we first wrote down was wrong, and is kept on record below.

Hand-worked boundary cases, Ninety and the Commission calculator
SituationBy handNinetyEC calculatorMatch
Two trips that overlap 2024-04-10Overlap: 1–20 March and 10–30 March cover 30 distinct days, not 41. 90 − 30 = 60, and a stay from 10 April for 60 days ends on 8 June.Calculator: Possible stay until 08/06/24The stay may be authorised for up to: 60 day(s)60 left60 left60 leftMatch
Still inside, no exit yet 2024-04-10Open stay: present since 1 March, so 31 March days and 10 April days count through the control date (41). The 90th day of the stay is 29 May.Calculator: Possible stay until 29/05/24The stay may be authorised for up to: 49 day(s)49 left49 left49 leftMatch
Entry refused, and the date it is allowed again 2024-04-20The calculator refusing a stay: 45 + 45 = 90 used. 1 January leaves the window on 29 June (day 181 of 2024 minus 179 is 2 January). From then each new day replaces a January–February day, for 45 days.Calculator: A stay may not be authorised.At 29/06/24 a stay may be authorized for 45 daysThe stay may be authorised for up to: 0 day(s)0 left0 left0 leftMatch
Control date on the spring 2026 clock change 2026-03-29Clock change: 29 March 2026 is the 23-hour day in the EU. 20–29 March is 10 days, 80 left, and 29 March + 80 days is 17 June.Calculator: Possible stay until 17/06/26The stay may be authorised for up to: 80 day(s)80 left80 left80 leftMatch
29 Feb 2024 still counts on 26 Aug 2024-08-26Leap day on its last day in the window: 26 Aug minus 179 days is 29 Feb, so 1 day is used, yet 90 are left because 29 Feb leaves the window the next day.Calculator: Possible stay until 23/11/24The stay may be authorised for up to: 90 day(s)90 left90 left90 leftMatch
29 Feb 2024 has left by 27 Aug 2024-08-27Leap day out of the window: on 27 Aug the window starts on 1 March, so nothing is used and the 90th day of a new stay is 24 November.Calculator: Possible stay until 24/11/24The stay may be authorised for up to: 90 day(s)90 left90 left90 leftMatch
A trip whose exit is before its entry 2024-04-10Impossible input: an exit on 1 March for an entry on 20 March. Neither tool counts it; the calculator stops, and Ninety names the trip.Calculator: The stay with entering date 20/03/24 is later than the exit date 01/03/24Calculation of stay is not possiblerefusedrefusedrefusedMatch
30 old days leave the window during the new stay 2024-06-20Rolling window inside the stay: 30 January days are used on 20 June, but from 29 June one leaves per day, so the total never passes 39 and a full 90-day stay (to 17 September) is allowed, not 60.Calculator: Possible stay until 17/09/24The stay may be authorised for up to: 90 day(s)90 left90 left90 leftMatch
Exit one day, enter again the next 2024-05-25Back-to-back trips: 10 + 10 days with no day shared and none missing, 70 left, so a stay from 25 May runs to 2 August.Calculator: Possible stay until 02/08/24The stay may be authorised for up to: 70 day(s)70 left70 left70 leftMatch
A stay across 10 April 2026 2026-05-01The EES start date does not touch the 90/180 count: 1–20 April 2026 is 20 days whether or not part of it was before 10 April. (Only the EES comparison treats that stay differently.)Calculator: Possible stay until 09/07/26The stay may be authorised for up to: 70 day(s)70 left70 left70 leftMatch
Two stays that add up to 93 days 2024-02-01A past overstay found by counting both stays together: 32 + 61 = 93 days in the window ending 30 June 2023, so its last 3 days were over.Calculator: Days of stay in the 180-days period from 02/01/23 to 30/06/23: 93 day(s)Overstay in the period from 28/06/23 to 30/06/23 (3 days)First written down as “90 days left on 2024-02-01”, which was wrong. We first wrote this down as two old stays that had both left the window, and missed that together they were 93 days in one window. The calculator and Ninety both report the 3-day overstay; the fixture was corrected before it went in.3 overstay3 overstay3 overstayMatch
Overlapping trips that overstay 2024-04-10Overstay across overlapping trips, pinned from the differential fuzzer (seed 20261019, run 14, reduced to two trips): 1 January to 10 April is 101 distinct days, so days 91 to 101 (31 March to 10 April) are over, 11 days, listed once.Calculator: Days of stay in the 180-days period from 14/10/23 to 10/04/24: 101 day(s)Overstay in the period from 31/03/24 to 10/04/24 (11 days)11 overstay11 overstay11 overstayMatch