Buyer’s guide Sourced and dated

Which data analysis tools work on a confidential file without uploading it?

Three free options keep the rows on your machine: xmetric in your browser tab on Mac, Windows or Linux with nothing to install, Tableau Desktop Free Edition installed on Windows or Mac for one person, and Power BI Desktop on Windows. Cloud AI tools like Julius are a different category: the file goes to their servers, whatever their policy on training.

Updated

Our pick

xmetric

Nothing to install and nothing uploaded, which matters on a locked-down laptop where you can't add software. It runs on Mac, Windows and Linux, and does the FIXED peer comparisons a pay review needs.

Pick something else if

You want a full installed app and work alone (Tableau Desktop Free Edition), your company runs on Windows and Microsoft 365 (Power BI Desktop), or the data isn't sensitive and you'd rather ask questions in a chat (Julius).

xmetric makes this page. Every vendor fact below links to the vendor’s own page and the date we checked it.

How they compare

xmetric Our pickTableau DesktopPower BI DesktopJulius
Where the data is processedxmetricIn your browser. Files are not uploaded.Source · checked October 17Tableau DesktopTableau Cloud: hosted and managed by Tableau. Tableau Server: managed by the customer. Desktop/Reader: local files.Source · checked October 17Power BI DesktopDesktop works locally; the Power BI service (sharing, publishing) is Microsoft-hosted SaaS inside Microsoft Fabric.Source · checked October 17JuliusFiles are analyzed in Julius's cloud workspace; plans list server RAM and file storage.Source · checked October 17
Runs onxmetricAny modern browser on Mac, Windows or Linux. Nothing to install.Source · checked October 17Tableau DesktopTableau Desktop on Windows or Mac; Tableau Cloud hosted by Tableau, or Tableau Server managed by the customer.Source · checked October 17Power BI DesktopPower BI Desktop runs on Windows only (Windows 10 / Server 2016 or later); sharing goes through the cloud Power BI service.Source · checked October 17JuliusBrowser-based cloud workspace.Source · checked October 17
Cost to startxmetricFree in your browser. No account needed to open a file.Saving a workbook online and sharing a link need a free account.Source · checked October 20Tableau DesktopTableau Desktop Free Edition, Tableau Public and Tableau Reader are free.Free Edition can't publish, share online, or share packaged workbooks with others. Anything on Tableau Public is public.Source · checked October 17Power BI DesktopPower BI Desktop is a free download; free account (Fabric Free license) also available.Sharing reports needs Pro or Premium; Desktop is Windows-only; the service needs a work or school email.Source · checked October 17JuliusA free plan to start.Free plan limits are not listed on the pricing page.Source · checked October 17
Opens Tableau .twbx filesxmetricOpens .twbx and .twb in the browser app with dashboards, quick filters and filter actions working, plus sheets, data sources, formulas and packaged extracts.Source · checked October 20Tableau DesktopYes, native format. Opens in Tableau Desktop or Tableau Reader.Source · checked October 17Power BI DesktopNot listed in the vendor's docs. Connectors cover Excel, Text/CSV, JSON, XML, Parquet, PDF, Folder and databases; no Tableau connector.Source · checked October 17JuliusNot verified yetWhere we looked · October 17

Try it: a pay equity check that never leaves this tab

Here's a clinic group's payroll, opened in xmetric on this page. Women's median salary is $57,250 against $67,100 for men. Compare each person with peers in the same department and level, though, and the gap is gone. It's in who gets promoted.

Is there a gender pay gap, and where is it?

Computed by the xmetric engine

The data

Harbor Health clinics payroll, October 2026

Synthetic datapayroll.csv

A 320-person regional clinic group: nurses, pharmacists, lab staff, admin, IT and facilities, across five job levels. No names, just what a pay review needs.

employee_iddepartmentlevelgenderhire_yearbase_salary
E0212AdministrationL2 SpecialistM201555400
E0039NursingL2 SpecialistF201860100
E0228AdministrationL3 SeniorM201268100
E0018NursingL3 SeniorF201080200

Step 1

Median salary by gender

Across the whole company, women's median pay is well below men's. That's the number a board sees first.

Point at a bar to read it.
$0$20K$40K$60KFM

Tableau

MEDIAN([base_salary])
// gender on Columns

The xmetric engine ran this formula and got the SQL’s Base salary column, row for row.

SQL

SELECT
  gender,
  COUNT(*) AS employees,
  MEDIAN(base_salary) AS median_salary
FROM input
GROUP BY gender
ORDER BY gender

Rows

GenderEmployeesBase salary
F$212$57,250
M$108$67,100

Step 2

Pay against peers in the same department and level

Compare each person with their own peer group and the gap disappears: both medians sit at 1.00. Same job, same pay.

Point at a bar to read it.
00.250.50.751FM

Tableau

[base_salary] / { FIXED [department], [level] : MEDIAN([base_salary]) }
// then MEDIAN of it by gender

SQL

WITH c AS (
  SELECT
    *,
    base_salary
      / MEDIAN(base_salary) OVER (PARTITION BY department, level) AS compa_ratio
  FROM input
)
SELECT gender, MEDIAN(compa_ratio) AS median_compa_ratio
FROM c
GROUP BY gender
ORDER BY gender

Rows

GenderCompa ratio
F1
M1

Step 3

Who holds which level

Here's the gap. Women hold three in four associate jobs and about a third of lead and manager jobs. The pay gap is a promotion gap.

Point at a bar to read it.
0%25%50%75%100%L1 AssociateL2 SpecialistL3 SeniorL4 LeadL5 Manager

Tableau

SUM(IF [gender] = "F" THEN 1 ELSE 0 END) / COUNT([employee_id])
// level on Rows

The xmetric engine ran this formula and got the SQL’s Share women column, row for row.

SQL

SELECT
  level,
  COUNT(*) AS employees,
  AVG(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS share_women
FROM input
GROUP BY level
ORDER BY level

Rows

LevelEmployeesShare women
L1 Associate10200%74.5%
L2 Specialist10500%79%
L3 Senior6900%55.1%
L4 Lead2800%39.3%
L5 Manager1600%25%

Step 4

Who needs a pay review

The same FIXED peer median gives the review list. Move the threshold to see how fast the list grows.

Employee IDDepartmentLevelGenderBase salaryCompa ratio
E0164LaboratoryL4 LeadM77,40083%
E0141PharmacyL1 AssociateF46,10083.4%
E0147PharmacyL2 SpecialistF59,60083.7%
E0243AdministrationL1 AssociateF36,10084.3%
E0211AdministrationL1 AssociateM36,30084.8%
E0226AdministrationL3 SeniorM57,50085.3%
E0135PharmacyL2 SpecialistF60,80085.4%
E0251ITL1 AssociateF47,40085.6%
E0116NursingL2 SpecialistM52,50085.9%
E0035NursingL3 SeniorF64,90086.2%
E0041NursingL1 AssociateF41,00086.3%
E0034NursingL2 SpecialistF52,90086.6%
E0265ITL2 SpecialistM59,60086.9%
E0071NursingL2 SpecialistF53,10086.9%
E0015NursingL1 AssociateF41,30086.9%
E0260ITL1 AssociateM48,20087%
E0054NursingL1 AssociateF41,50087.4%
E0205AdministrationL2 SpecialistF46,90087.5%
E0059NursingL3 SeniorM66,10087.8%
E0122PharmacyL2 SpecialistM62,60087.9%
E0201AdministrationL3 SeniorM59,30088%
E0094NursingL5 ManagerM112,20088.1%
E0045NursingL1 AssociateF41,90088.2%
E0099NursingL4 LeadM89,80088.3%
E0096NursingL3 SeniorF66,50088.3%
E0230AdministrationL1 AssociateM37,80088.3%
E0098NursingL1 AssociateF42,00088.4%
E0235AdministrationL3 SeniorF59,60088.4%
E0102NursingL2 SpecialistM54,10088.5%
E0247AdministrationL3 SeniorF59,70088.6%
E0019NursingL5 ManagerF113,00088.7%
E0195AdministrationL1 AssociateF38,00088.8%
E0267ITL1 AssociateF49,20088.8%
E0286FacilitiesL1 AssociateM34,50088.9%
E0270ITL2 SpecialistF61,00088.9%
E0005NursingL4 LeadM90,50089%
E0023NursingL2 SpecialistM54,50089.2%
E0300FacilitiesL1 AssociateF34,70089.4%
E0184LaboratoryL2 SpecialistM50,60089.6%
E0114NursingL3 SeniorM67,50089.6%
E0244AdministrationL2 SpecialistF48,10089.7%
E0168LaboratoryL1 AssociateM39,40090%
E0312FacilitiesL2 SpecialistF44,90090%

Tableau

[base_salary] / { FIXED [department], [level] : MEDIAN([base_salary]) } < 0.9

SQL

WITH c AS (
  SELECT
    *,
    base_salary
      / MEDIAN(base_salary) OVER (PARTITION BY department, level) AS compa_ratio
  FROM input
)
SELECT
  employee_id,
  department,
  level,
  gender,
  base_salary,
  compa_ratio
FROM c
WHERE compa_ratio < 0.9
ORDER BY compa_ratio

Rows

Employee IDDepartmentLevelGenderBase salaryCompa ratio
E0164LaboratoryL4 LeadM77,40083%
E0141PharmacyL1 AssociateF46,10083.4%
E0147PharmacyL2 SpecialistF59,60083.7%
E0243AdministrationL1 AssociateF36,10084.3%
E0211AdministrationL1 AssociateM36,30084.8%
E0226AdministrationL3 SeniorM57,50085.3%
E0135PharmacyL2 SpecialistF60,80085.4%
E0251ITL1 AssociateF47,40085.6%
E0116NursingL2 SpecialistM52,50085.9%
E0035NursingL3 SeniorF64,90086.2%
E0041NursingL1 AssociateF41,00086.3%
E0034NursingL2 SpecialistF52,90086.6%
E0265ITL2 SpecialistM59,60086.9%
E0071NursingL2 SpecialistF53,10086.9%
E0015NursingL1 AssociateF41,30086.9%
E0260ITL1 AssociateM48,20087%
E0054NursingL1 AssociateF41,50087.4%
E0205AdministrationL2 SpecialistF46,90087.5%
E0059NursingL3 SeniorM66,10087.8%
E0122PharmacyL2 SpecialistM62,60087.9%
E0201AdministrationL3 SeniorM59,30088%
E0094NursingL5 ManagerM112,20088.1%
E0045NursingL1 AssociateF41,90088.2%
E0099NursingL4 LeadM89,80088.3%
E0096NursingL3 SeniorF66,50088.3%
E0230AdministrationL1 AssociateM37,80088.3%
E0098NursingL1 AssociateF42,00088.4%
E0235AdministrationL3 SeniorF59,60088.4%
E0102NursingL2 SpecialistM54,10088.5%
E0247AdministrationL3 SeniorF59,70088.6%
E0019NursingL5 ManagerF113,00088.7%
E0195AdministrationL1 AssociateF38,00088.8%
E0267ITL1 AssociateF49,20088.8%
E0286FacilitiesL1 AssociateM34,50088.9%
E0270ITL2 SpecialistF61,00088.9%
E0005NursingL4 LeadM90,50089%
E0023NursingL2 SpecialistM54,50089.2%
E0300FacilitiesL1 AssociateF34,70089.4%
E0184LaboratoryL2 SpecialistM50,60089.6%
E0114NursingL3 SeniorM67,50089.6%
E0244AdministrationL2 SpecialistF48,10089.7%
E0168LaboratoryL1 AssociateM39,40090%
E0312FacilitiesL2 SpecialistF44,90090%

At the default threshold, 43 people are paid below that share of their peer median: that's the review list, and it was built without a single row leaving your browser.

80%95%

Common mistake

Comparing with the wrong peer group

Leave level out of the FIXED expression and every junior looks underpaid next to their own managers: 121 flags, 99 of them associates. With level in, it's 43 people who really sit low in their band.

Wrong
Point at a bar to read it.
99Associates

Tableau

[base_salary] / { FIXED [department] : MEDIAN([base_salary]) }

SQL

WITH c AS (
  SELECT
    *,
    base_salary
      / MEDIAN(base_salary) OVER (PARTITION BY department) AS compa_ratio
  FROM input
)
SELECT
  COUNT(*) AS flagged,
  COUNT(*) FILTER (WHERE level = 'L1 Associate') AS associates
FROM c
WHERE compa_ratio < 0.9
Right
Point at a bar to read it.
16Associates

Tableau

[base_salary] / { FIXED [department], [level] : MEDIAN([base_salary]) }

SQL

WITH c AS (
  SELECT
    *,
    base_salary
      / MEDIAN(base_salary) OVER (PARTITION BY department, level) AS compa_ratio
  FROM input
)
SELECT
  COUNT(*) AS flagged,
  COUNT(*) FILTER (WHERE level = 'L1 Associate') AS associates
FROM c
WHERE compa_ratio < 0.9

Run it on your own file

Drop your own payroll export (one row per employee, with department, level and salary) and the same steps run on it, in your browser. Nothing is uploaded.

Drop a CSV anywhere on this page

Up to 10,000 rows. The sample, payroll.csv, shows the shape.

When another tool is the better choice

  • If this is you

    A locked-down laptop, a Mac, or no time to get software approved

    xmetric

    Opens in the browser; the file stays in the tab.

  • If this is you

    You want an installed desktop app and work on your own

    Tableau Desktop

    Tableau Desktop Free Edition: full Desktop analytics for one person, stored locally; no publishing, online sharing or sharing packaged workbooks.

  • If this is you

    Windows laptops and reports that end up in Microsoft 365

    Power BI Desktop

    Desktop is free and local; sharing means publishing to the Power BI service with Pro at $14.00 user/month, paid yearly.

  • If this is you

    Data that isn't sensitive, and you'd rather ask in a chat

    Julius

    Files are analyzed in Julius's cloud workspace; plans list server RAM and file storage.

Questions

How do I show my security team that xmetric doesn't upload the file?

Open the browser's developer tools (F12, or Cmd+Option+I on a Mac), go to the Network tab, then drop the file and build the charts. No request carries your rows. Only saving a workbook online sends anything, and that's a separate, explicit step.

Isn't a vendor that doesn't train on my data good enough?

Not for most payroll, health or deal data. Not training on a file is a promise about what happens after the upload; the file still sits on someone else's server, which is what vendor reviews, data processing agreements and HIPAA or GDPR transfer rules are about.

What happens to my data when I close the tab?

If you haven't saved the workbook online, it's gone with the tab. Nothing was stored anywhere else.

What is a compa-ratio?

An employee's salary divided by the median salary of their peers (here, the same department and level). 1.00 is the middle of the band; below 0.90 is a common flag for a pay review.

Sources