Adagio
Legal

Exactly what Adagio sends

Version: 1.9. Last updated: 16 October 2026.

Adagio processes video entirely on your device. So that this promise can be checked rather than taken on trust, this page publishes the complete list of the anonymous statistics the app sends — every measurement, every label on it, and every value that label can take. The list is finite: the app cannot send a measurement that is not on this page, and a new one cannot be added without being described here — that is verified automatically on every build.

Crash reports are not part of these statistics. After a crash the app sends a crash report the next time it starts, and failures inside the app are reported as short notices; both go to a separate service, and what they contain is described in the Crash reports section of the Privacy Policy.

This is a companion to the Privacy Policy, not a replacement.

What this data does not contain

None of the measurements below contains, or can contain:

  • video, frames or thumbnails;
  • file names, paths or photo-library object identifiers;
  • device, install, user, account or advertising identifiers;
  • the exact resolution, duration or frame rate of your video;
  • EXIF, geotags or capture time;
  • error text, logs, stack traces, screenshots or screen recordings;
  • the people you sent a result to;
  • transaction identifiers, receipts or payment details.

The records carry no device or user identifier. One upload holds the records of one device and is stored with one shared timestamp, so the records of one upload are linked to each other. Nothing in them links different uploads to each other or to you, and we do not attempt such matching.

The measurements

Fourteen in total. A “counter” is a whole number of events; a “histogram” is a distribution of durations across fixed buckets, never an individual value.

MeasurementKindWhat it countsLabels
adagio_render_terminal_totalcounterhow a render endedoutcome, reason, model_tier, platform, os_major, release
adagio_render_wall_secondshistogramhow long the whole render tookquality_mode, model_tier, platform, release
adagio_render_work_secondshistogramhow long the selected processing range was — in seconds of the source video, not seconds of workquality_mode, model_tier, platform, release
adagio_render_output_frames_totalcounterhow many frames were producedquality_mode, factor, model_tier, thermal_state, platform, release
adagio_render_output_frame_active_seconds_totalcounterhow many seconds of work those frames tookquality_mode, factor, model_tier, thermal_state, platform, release
adagio_render_source_profile_totalcounterwhich class the source clip falls intosource_resolution_class, fps_class, aspect_class, platform, release
adagio_render_downscale_totalcounterhow far the frame had to be shrunk for the modeldownscale_long_edge_ratio_class, model_tier, quality_mode, platform, release
adagio_result_actions_totalcounterwhat you did with the finished resultaction, outcome, platform, release
adagio_flow_transitions_totalcounterwhich steps of the app were reached, including the steps toward buying Protransition, platform, release
adagio_wizard_choice_totalcounterwhat the video was set up for — smoother motion or slow motion, the whole clip or chosen moments — and how processing endedgoal, scope, outcome, platform, release
adagio_wizard_exit_totalcounterthe processing-setup step left from, or that processing was startedstep, platform, release
adagio_engine_handover_totalcounterthe system's own frame engine handed a video to our model — and whyhandover_reason, platform, os_major, release
adagio_first_run_totalcounterthe steps of the first run after installing — each one once per installfirst_run_step, platform, release
adagio_activity_totalcounterhow often the app is opened: the first opening in a day, week, month; a new install; a return on day 1, 7, 30; for the last month — on how many days the app was opened and how many videos were made, in bucketsactivity, platform, release

Both histograms use these bucket bounds, in seconds: 1, 2, 5, 10, 30, 60, 180, 600, 1800, 7200 and “above”. A histogram record carries three numbers: how many observations were folded into it, their sum, and the per-bucket counts. Which has a consequence better said than left out: when a record has folded exactly one observation, its sum is that render's duration, to a fraction of a second. It is still a number with no name, file or identifier attached — but it is not “only a bucket”, and calling it only a bucket would be untrue.

The labels and all of their values

LabelMeaningPossible values
outcomehow it endedsuccess, failure, cancelled
reasonwhy it failed; none on successnone, unknown, timeout, permission_denied, file_missing, disk_full, writer_failed, probe_timed_out, memory_admission_rejected, backgrounded_during_render, slow_region_too_short, audio_render_failed, mux_failed, enhance_failed, model_missing, model_invalid, model_load_timed_out, quality_plan_stale, source_read_failed
model_tierthe frame-size class the model was chosen for. Not your clip's resolution — the bucket it fell into. none means the platform's own engine did the work and none of our models was used360p, 480p, 720p, 1080p, 1440p, 4k, none
platformplatformios, android, macos
os_majorthe major OS version only — no minor version, no build numberios_18, ios_26, ios_27, android_13, android_14, android_15, macos_15, macos_26, macos_27
releaseapp version1.4.0+1, 1.3.0+1, 1.2.0+1, 1.1.0+1, 1.0.0+1
quality_modethe quality mode you chosefaster, best
factorhow much smoother the result was made2, 4, 8
thermal_statethe device's thermal band during the work; not a temperaturenominal, fair, serious, critical
source_resolution_classresolution class of the source clip, by the long edge of the framesd_<=480, hd_481_720, fhd_721_1080, qhd_1081_1440, uhd_>1440
fps_classframe-rate class of the source clip<=30, 31_60, >60
aspect_classframe orientationportrait, landscape, square_or_other
downscale_long_edge_ratio_classhow far the frame's long edge had to be shrunk<=1, >1_<=1.5, >1.5_<=2, >2_<=3, >3
actionwhat happened to the result (played also when it started by itself)played, saved, shared
transitionthe app step reached; values starting with free_, offer_, status_, buy_, restore_ are steps toward buying, see belowimport_completed, analysis_ready, render_started, render_finished, result_played, result_saved, result_shared, free_video_spent_1, free_video_spent_2, free_video_spent_3, free_limit_reached, offer_opened_result, offer_opened_sidebar, offer_opened_settings, status_opened_from_offer, buy_completed, buy_pending, buy_cancelled, buy_failed, restore_tapped
goalwhat was asked for: smoother motion or slow motionsmooth, slow_motion
scopethe whole clip or chosen momentswhole, moments
stepthe processing-setup step left from; confirm — left the last step without starting; started — processing was startedgoal, scope, moments, whole_speed, fps, confirm, started
handover_reasonwhy the system's own engine handed the video to our model: raster — it does not take this frame size; memory — not enough memory before the start; memory_unmeasured — free memory could not be measured; teardown_pending — the previous processing had not closed yet; restart — processing began again on our model mid-way: memory ran out, or the system engine failedraster, memory, memory_unmeasured, teardown_pending, restart
first_run_stepa step of the first run: the introduction was shown, finished, or skipped on its first, second or third slide; the answer to the system's photo-access question (the whole library, part of it, refused — including a block set by the device's restrictions) or “Later” — iPhone and iPad only; the first import; the first finished video; the first saveintro_shown, intro_completed, intro_skipped_1, intro_skipped_2, intro_skipped_3, photo_full, photo_limited, photo_denied, photo_later, import, render_finished, saved
activityactive_day / active_week / active_month — the first opening of the app in a calendar day, week, month (by the device's clock); installed — a new install; return_d1 / return_d7 / return_d30 — an opening on exactly the 1st, 7th, 30th calendar day after installing; month_days_ — on how many days of the last calendar month the app was opened (1, 2–4, 5–10, 11 or more); month_videos_ — how many videos were made that month (0, 1, 2–3, 4 or more)active_day, active_week, active_month, installed, return_d1, return_d7, return_d30, month_days_1, month_days_2_4, month_days_5_10, month_days_11_plus, month_videos_0, month_videos_1, month_videos_2_3, month_videos_4_plus

The steps toward buying Pro

These values of the transition label describe the way from the free videos to a purchase. They carry no amounts, prices, currency, receipts or transaction identifiers.

  • free_video_spent_1, free_video_spent_2, free_video_spent_3 — a finished video took the first, second or third free video;
  • free_limit_reached — the free videos had run out: the result can be watched only with the Adagio mark;
  • offer_opened_result — the Pro offer was opened from such a result;
  • offer_opened_sidebar — the Pro offer was opened with the Pro button in the list of videos;
  • offer_opened_settings — the purchase screen was opened from Settings;
  • status_opened_from_offer — the "Purchase status" link was opened from the offer;
  • buy_completed, buy_pending, buy_cancelled, buy_failed — how the store's payment sheet ended after "Buy": purchase, awaiting approval, declined, error;
  • restore_tapped — "Restore purchase", or "Try again" after a failed check, was tapped and the app asked the store.

The first run

The counter adagio_first_run_total shows how many new installs get from the app's introduction to their first saved video. So that each step is counted once, the app keeps a mark of its own — “this step has happened”. The marks are kept only in the app's data on your device, are never sent, contain no number of any kind, and are deleted with the app. With statistics switched off, a step is marked but not sent. The counter's records carry only the name of the step, the platform and the app version.

How often the app is used

The counter adagio_activity_total shows how many devices open the app in a day, a week and a month, and whether they come back after installing — without any user, device or install number. For this the app keeps one record of its own: the last counted day, week and month, the install date (only for installs made from this version on), which returns after installing have already been counted, the current month's day and video counts, and whether statistics stayed on for that whole month. The record is kept only in the app's data on your device, is never sent, contains no identifier — no user, device or install number — and is deleted with the app. Only the labels in the table above are sent; the marks of one opening go together, in one delivery. With statistics switched off nothing is counted or sent — the app only notes for itself that the month is incomplete, and such a month is never sent later. We look at returns only as a share across all installs of a period and do not try to follow any single install.

Two labels worth explaining

model_tier is not your video's resolution. The app keeps several processing models for different frame sizes and picks a suitable one; this label names the bucket that was picked. It cannot be used to recover the clip's resolution, let alone its content.

The value none means none of our models took part at all: the frames were computed by the system's own engine, built into recent versions of iOS and macOS. No bucket describes that work, so we say so plainly instead of substituting the bucket that would have been picked. none reveals no more than the rest: not the clip's resolution and not its content, only that the device runs a recent enough system — which os_major already says.

os_major is the major version number only (18, not 18.4.1). That is enough to see “renders fail on this OS version” and far too little to single out a device: hundreds of millions of devices share the same number.

Where it goes, and how long it is kept

A gateway and monitoring system in the European Union (Frankfurt, Germany) receive the data. The statistics are not transferred outside the EU.

WhatRetention
Technical detail of how a job ended14 days
Anonymous daily performance and usage aggregates, including the steps toward buying90 days
Daily purchase, refund, proceeds and first-download aggregates from the store's reports (not from the app)12 months

How to turn it off

Settings → “What is sent” (or Settings → Privacy Center → “What is sent”) → “Work statistics” (a switch). Turning it off stops sending immediately and erases anything not yet sent from the device. Nothing about video processing changes.

Why this list can be trusted

It is not transcribed from the code by hand. The build compares this page against the measurement schema the app itself uses: if a measurement, a label or a new label value is added to the app without being described here, the check fails and that build is not shipped.

Related documentAdagio Privacy Policy