AREAvinox Ride Explorer
Loading vector map…
↥

Explore every second of your ride

Drop Avinox .proto files or a ZIP archive here


ANALYTICS OUTPUT

Edit Analytics

CREATE OR REPLACE
AIUse AI

Request: Tell AI what you want to create or change.

Current script

PREVIEW
Advanced / Edit script

Edit Library Analytics

Writing an output

Each script starts with @version 1, may define a few named calculations, and ends with exactly one output.

Recorded values

Use names such as Speed, Cadence, RiderPower, MotorTorque, Gradient, and Time. The editor suggests all available values as you type.

Calculations

Create uppercase variables and combine values with + - * /, comparisons, and and, or, or not.

CLIMBING = Speed > 3 km/h and Gradient > 3 %

Functions

Summarize with average(), minimum(), maximum(), sum(), or count(). Use smooth(values, seconds) for a calmer line.

Comments

Start a line with # to explain a calculation without changing its result.

Output

Use one of four graph types. Line is for an ordered trend, Scatter for a filtered relationship, Bar for a few calculated groups, and Heatmap for dense x/y samples.

Timeline zoom is also an Analytics filter. When a time graph is zoomed, cards and every plot type automatically analyze only that section. Full-series calculations such as smooth() are calculated first, then the selected range is applied.

# Card: one derived value
asCard("Peak torque", maximum(MotorTorque), unit: "Nm")

# Line: compare rider and motor contribution over time
RIDER_30 = smooth(RiderPower, 30 seconds)
MOTOR_30 = smooth(MotorPower, 30 seconds)
TOTAL_30 = RIDER_30 + MOTOR_30
# Add 1 only while total power is zero so coasting stays visible at 0%.
SAFE_TOTAL = TOTAL_30 + (TOTAL_30 == 0 W) * 1
RIDER_SHARE = RIDER_30 / SAFE_TOTAL * 100
MOTOR_SHARE = MOTOR_30 / SAFE_TOTAL * 100
MOVING = Speed > 3 km/h
asLine("Rider vs motor contribution", x: Time, y: [RIDER_SHARE, MOTOR_SHARE], where: MOVING, yUnit: "%")

# Scatter: reveal how the motor responds to rider effort
RIDER_15 = smooth(RiderPower, 15 seconds)
MOTOR_15 = smooth(MotorPower, 15 seconds)
POWERING = Speed > 3 km/h and TotalPower > 50 W
asScatter("Rider effort vs motor support", x: RIDER_15, y: MOTOR_15, where: POWERING, xUnit: "W", yUnit: "W")

# Bar: compare calculated buckets
asBar("Average power by gradient", x: ["Flat", "Climb", "Steep"], y: [120, 185, 245], yUnit: "W")

# Heatmap: reveal where thousands of samples concentrate
PEDALLING = Cadence > 20 rpm and RiderTorque > 0 Nm
asHeatmap("Pedalling style", x: Cadence, y: RiderTorque, where: PEDALLING, xUnit: "rpm", yUnit: "Nm")

Scatter automatically limits very long rides to a representative set of visible points; Heatmap still uses every matching sample and colors density from cool blue to hot red. A timeline zoom is shown once over the map and filters the whole Analytics board. The editor highlights mistakes, offers completions, and shows the result before you close it. Ask AI knows the same rules and can choose a plot from a plain-language request.

Analytics

Related settings

Reset Analytics?

All custom Analytics and their order will be lost and replaced with the current defaults.

Your rides stay with you

When you load a ride, the app reads the file directly in your browser to show the map, graphs and ride details.
The ride file is never uploaded!

Your loaded rides are saved in the browser's local database, so you can open them again later. You can export, import or clear that database at any time.

The server keeps aggregate daily page-view counts by country. It does not store IP addresses, locations, cookies, visitor identifiers or individual records.

Only the general area of a ride is shared.
I only know how many rides in a ~500km2 (~200 sq mi) box were loaded.
This helps me understand where the app is being used and which riding communities it reaches.
No ride data is uploaded!
I only know how many rides in each region-box were loaded!
Example only—these counts are fictional. Each number represents imports assigned to a broad area, never a route, start point or exact position.

Join rides

Choose rides manually

Avinox Ride Explorer

Get started

Select Load Rides, then choose the source you want to use.

Choose and explore a ride

Use the ride list to switch rides. Choose ★ Show all rides on map to browse saved rides together. Right-click a place on the map to find saved rides nearby. Move over a graph, or tap it on a phone, to follow that point on the map.

Use the map and graphs

Drag across a graph to select part of a ride. Select Range, or double-click the map or a graph, to clear the selection. Open Menu to change units, timeline labels and route colours.

More tools

Use the pencil beside the ride list to rename or delete a ride. Select Merge Rides to join ride parts.
Open Analytics and select Add Analytics to add an insight or chart.
Use the play control to replay a ride; select its record button to create a video. Open Menu → Settings for bike names, privacy and local data backup.

Your data

Your ride data always stays on your device, in this browser. Syncing connects your own devices directly; it does not upload your rides. You can review privacy choices, back up your data, or remove it at any time in Settings.

This is an independent community app, not an official Avinox app. Ride readings can occasionally be missing or imperfect.

Load from your Android phone

No app is required. Your ride is read directly from the phone and stays in this browser.

  1. Enable Developer options: on your phone, open Settings → About phone and tap Build number seven times.
  2. Open Settings → Developer options and enable USB debugging.
  3. Connect the phone to this computer with a USB data cable and unlock it.
  4. Select Connect phone below, choose your phone in the browser window, then approve Allow USB debugging on the phone.

Troubleshooting

Requires Chrome or Edge. If the phone is not listed, disconnect it, reconnect it and try again.
Use a data-capable cable and close other ADB tools.
In Developer options, try Revoke USB debugging authorizations, then disconnect and reconnect the phone and approve the new debugging prompt.

Where are your Avinox rides?

Choose the source that matches where the ride is stored. Imported rides stay in this browser.

1. From Bike with USB CableDirectly from the Avinox Display using a USB 2.0 data cable.

Turn the bike on and connect the Avinox Display to a PC or phone.
Open the ride_rec folder, then choose its .proto files.

Important:
use a data-capable USB 2.0 connection. USB 3.x connections may not expose the display correctly.
On phones use an OTG adapter/USB hub. Android may still have trouble reading the drive.

2. From Avinox AppLoad rides downloaded by the official Avinox app.

Rides are on the phone after downloading them in Avinox app.

Android

Connect Android phone with a USB data cable to the PC.
Direct loading requires Chrome or Edge, Developer options, and USB debugging.

Copy the files manually instead

Look in /sdcard/Android/data/com.avinox.ride/files/ebike/data/b-*_ov/
Android may hide the Android/data folder.

iPhone / iOS Untested

Create a device backup with iMazing.
In the Avinox Ride folder, show hidden files and copy the .proto files.

3. From CloudClosed beta; no phone or bike connection needed.

Avinox Cloud

Sign in to see rides saved in your Avinox account, then choose which ones to import.

Cloud Sync sends account requests through the Ride Explorer server.
Read ? to see exactly how Cloud Sync handles your login and ride data.

Cloud Sync is currently a closed beta. Sign in to check whether your email has access.
4. Sync PC and PhoneMake both Ride Explorer libraries contain the same rides.

Rides already loaded in Ride Explorer synchronize directly between both devices.
Show the QR on the PC and scan it with the phone’s normal Camera app.
Each device sends what the other is missing, so both finish with the same ride library.

Scan with the other device

Use its normal Camera app. Both ride libraries will synchronize automatically.

Preparing secure connection…

Your privacy

Why is a server needed?

Avinox does not allow this website to download rides directly from your account.
Ride Explorer must therefore act as a secure middleman between your browser and Avinox.

What happens?

  1. You enter your Avinox login.
  2. Ride Explorer passes it to Avinox. Your data is not saved on Ride Explorer.
  3. Avinox gives Ride Explorer temporary access to your cloud rides.
  4. Your rides pass through Ride Explorer and are saved in your browser.
  5. Ride Explorer does not keep a copy of any of your data.

When you log out, the temporary Avinox access is removed.
Rides already imported remain in your browser until you delete them.

In short

Technical note

Avinox requests require protected Avinox signing credentials and are blocked from normal browser access. Ride Explorer therefore performs the signed requests and keeps the Avinox account token in memory for a short-lived session.

The browser receives only an HttpOnly session cookie. Ride files are streamed directly to the browser and stored in IndexedDB.

Email addresses, Passwords, Avinox tokens, temporary download URLs and ride files are NOT written to persistent server storage.

Choose rides to import

Rides already in your database can be selected again. Re-importing replaces the existing ride, including a ride stored inside a merged ride.

Choose a bike

Your Avinox account contains rides from more than one bike.

Choose a bike

Only rides from the selected bike will be exported.

Data Import/Export

Choose what to clear

This permanently removes the selected local data from this browser. Export a database backup first if you may need your rides again.

This cannot be undone. Only items selected above will be cleared.

Choose backup contents

Select what to include.

Adding rides to your library

Preparing rides…

0 imported · 0 skipped · 0 failed