Buyer’s guide Sourced and dated

Which free BI tool should a small nonprofit use?

If your donor data comes out of a CRM as CSV or Excel exports and must stay private, use xmetric: it's free, runs in the browser on Mac or Windows, and doesn't upload the file. Pick Data Studio for live dashboards from Google Sheets, Power BI if you live in Microsoft 365 on Windows, and Tableau if you already pay for Tableau seats with Salesforce.

Updated

Our pick

xmetric

Donor exports stay on your laptop, it costs nothing with no eligibility check, and it works on the Macs and Windows laptops volunteers already have. It also computes donor retention and LYBUNT with the same formulas Tableau uses.

Pick something else if

Your data already lives in Google Sheets and you want a live web dashboard (Data Studio), your staff works in Microsoft 365 on Windows (Power BI), or you already have Tableau seats through Salesforce (Tableau).

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 pickData Studio (formerly Looker Studio)TableauPower BI
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 20Data Studio (formerly Looker Studio)Data Studio (formerly Looker Studio) self-service tier, no charge.Web-only. Pro features (team workspaces, Google Cloud support, CMEK) cost extra; some partner connectors are paid.Source · checked October 17TableauTableau 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 BIPower 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 17
Where donor data goesxmetricIn your browser. Files are not uploaded.Source · checked October 17Data Studio (formerly Looker Studio)Live connections leave data in the source (cached temporarily); extracts and uploaded CSVs are stored by Google (Cloud Storage).Source · checked October 17TableauTableau Cloud: hosted and managed by Tableau. Tableau Server: managed by the customer. Desktop/Reader: local files.Source · checked October 17Power BIDesktop works locally; the Power BI service (sharing, publishing) is Microsoft-hosted SaaS inside Microsoft Fabric.Source · checked October 17
Runs onxmetricAny modern browser on Mac, Windows or Linux. Nothing to install.Source · checked October 17Data Studio (formerly Looker Studio)Browser-based cloud service only (no desktop app).Source · checked October 17TableauTableau Desktop on Windows or Mac; Tableau Cloud hosted by Tableau, or Tableau Server managed by the customer.Source · checked October 17Power BIPower BI Desktop runs on Windows only (Windows 10 / Server 2016 or later); sharing goes through the cloud Power BI service.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 20Data Studio (formerly Looker Studio)Not listed in the vendor's docs. File connectors listed: Google Sheets, Microsoft Excel, Upload CSV files, Extract data.Source · checked October 17TableauYes, native format. Opens in Tableau Desktop or Tableau Reader.Source · checked October 17Power BINot listed in the vendor's docs. Connectors cover Excel, Text/CSV, JSON, XML, Parquet, PDF, Folder and databases; no Tableau connector.Source · checked October 17

Try it: the question every fundraiser asks

Here are three years of a small charity's gifts, opened in xmetric on this page. 64.1% of 2024's donors gave again in 2025. The other 80 gave $19,813 in 2024 and nothing in 2025: that's the call list.

Who gave last year but not this year?

Computed by the xmetric engine

The data

Riverside Youth League donor gifts, 2023 to 2025

Synthetic datagifts.csv

A community sports charity with 360 donors and four campaigns a year: Spring Appeal, Summer Fun Run, Giving Tuesday and the Year-End Appeal.

gift_iddonor_iddonor_namegift_datecampaignamount
G00027D0010Lena Smith2023-04-01Spring Appeal25
G00359D0126Victor Lopez2023-04-02Spring Appeal50
G00381D0136Kai Murphy2023-04-02Spring Appeal500
G00508D0188Grace Lopez2023-04-02Spring Appeal250

Step 1

Donors and giving per year

Giving grew every year. The question is who it grew from.

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

SQL

SELECT
  year(gift_date) AS year,
  COUNT(DISTINCT donor_id) AS donors,
  SUM(amount) AS total
FROM input
GROUP BY year
ORDER BY year

Rows

YearDonorsAmount
2,023166$48,500
2,024223$57,800
2,025253$75,938

Step 2

Retention: 2024 donors who gave again in 2025

A FIXED expression looks at each donor across all their gifts, whatever the view shows.

Retention

64.1%

Tableau

{ FIXED [donor_id] : MAX(IF YEAR([gift_date]) = 2025 THEN 1 ELSE 0 END) }

SQL

WITH d AS (
  SELECT
    donor_id,
    SUM(CASE WHEN year(gift_date) = 2024 THEN amount ELSE 0 END) AS g24,
    SUM(CASE WHEN year(gift_date) = 2025 THEN amount ELSE 0 END) AS g25
  FROM input
  GROUP BY donor_id
)
SELECT
  COUNT(*) FILTER (WHERE g24 > 0) AS donors_2024,
  COUNT(*) FILTER (WHERE g24 > 0 AND g25 > 0) AS retained,
  COUNT(*) FILTER (WHERE g24 > 0 AND g25 > 0)
    * 1.0
    / COUNT(*) FILTER (WHERE g24 > 0) AS retention
FROM d

Rows

Donors 2024RetainedRetention
22300%14300%64.1%

Step 3

The LYBUNT list

Sorted by last year's gift: call from the top.

Donor IDDonor nameGave 2024
D0170Quinn Okafor1,500
D0009Elena Haddad1,500
D0260Femi Lopez1,250
D0360Ava Nguyen1,250
D0116Lena Nguyen750
D0283Jamal Patel625
D0135Isla Smith500
D0351Femi Cohen500
D0081Mia Garcia500
D0011Kai Smith500
D0265Jamal Smith500
D0284Leo Tanaka500
D0198Tara Rossi500
D0058Yara Tanaka375
D0259Omar Haddad375
D0148Kai Novak350
D0224Mateo Murphy350
D0008Mia Rossi300
D0354Ava Lopez250
D0117Leo Smith250
D0313Grace Okafor250
D0230Nora Patel250
D0311Quinn Cohen250
D0155Nora Okafor250
D0336Uma Patel250
D0249Liam Cohen250
D0066Jamal Rossi250
D0319Mia Lopez250
D0346Isla Tanaka200
D0309Yara Novak200
D0183Mateo Okafor200
D0267Isla Murphy200
D0233Dev Silva200
D0049Rosa Novak200
D0119Elena Rossi200
D0041Victor Cohen200
D0281Liam Patel175
D0320Yara Okafor150
D0306Victor Kim150
D0310Leo Kim150
D0173Femi Okafor150
D0314Elena Rossi100
D0294Ava Nguyen100
D0226Yara Kim100
D0113Grace Murphy100
D0141Wen Patel100
D0019Ben Brown100
D0338Ana Murphy100
D0234Priya Tanaka100
D0181Leo Murphy100

First 50 of 80 rows.

Tableau

{ FIXED [donor_id] : SUM(IF YEAR([gift_date]) = 2024 THEN [amount] END) } > 0 AND { FIXED [donor_id] : SUM(IF YEAR([gift_date]) = 2025 THEN [amount] ELSE 0 END) } = 0

SQL

WITH d AS (
  SELECT
    donor_id,
    any_value(donor_name) AS donor_name,
    SUM(CASE WHEN year(gift_date) = 2024 THEN amount ELSE 0 END) AS gave_2024,
    SUM(CASE WHEN year(gift_date) = 2025 THEN amount ELSE 0 END) AS gave_2025
  FROM input
  GROUP BY donor_id
)
SELECT donor_id, donor_name, gave_2024
FROM d
WHERE gave_2024 > 0 AND gave_2025 = 0
ORDER BY gave_2024 DESC

Rows

Donor IDDonor nameGave 2024
D0170Quinn Okafor1,500
D0009Elena Haddad1,500
D0260Femi Lopez1,250
D0360Ava Nguyen1,250
D0116Lena Nguyen750
D0283Jamal Patel625
D0135Isla Smith500
D0351Femi Cohen500
D0081Mia Garcia500
D0011Kai Smith500
D0265Jamal Smith500
D0284Leo Tanaka500
D0198Tara Rossi500
D0058Yara Tanaka375
D0259Omar Haddad375
D0148Kai Novak350
D0224Mateo Murphy350
D0008Mia Rossi300
D0354Ava Lopez250
D0117Leo Smith250
D0313Grace Okafor250
D0230Nora Patel250
D0311Quinn Cohen250
D0155Nora Okafor250
D0336Uma Patel250
D0249Liam Cohen250
D0066Jamal Rossi250
D0319Mia Lopez250
D0346Isla Tanaka200
D0309Yara Novak200
D0183Mateo Okafor200
D0267Isla Murphy200
D0233Dev Silva200
D0049Rosa Novak200
D0119Elena Rossi200
D0041Victor Cohen200
D0281Liam Patel175
D0320Yara Okafor150
D0306Victor Kim150
D0310Leo Kim150
D0173Femi Okafor150
D0314Elena Rossi100
D0294Ava Nguyen100
D0226Yara Kim100
D0113Grace Murphy100
D0141Wen Patel100
D0019Ben Brown100
D0338Ana Murphy100
D0234Priya Tanaka100
D0181Leo Murphy100

First 50 of 80 rows.

Run it on your own file

Drop your own CRM export (one row per gift, with a donor id, a date and an amount) and the same three steps run on it, in your browser. Nothing is uploaded.

Drop a CSV anywhere on this page

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

When another tool is the better choice

  • If this is you

    Donor exports from Bloomerang, DonorPerfect, Little Green Light or Salesforce, analysed on a laptop

    xmetric

    Free, private by default, no install.

  • If this is you

    Your data lives in Google Sheets and the board wants a live web dashboard

    Data Studio

    Free, cloud-hosted, connects to Sheets natively. Keep personal data out of it.

  • If this is you

    Staff on Windows inside Microsoft 365, reports shared in Teams

    Power BI

    Desktop is free on Windows; sharing needs Pro at $14.00 user/month, paid yearly.

  • If this is you

    You already pay for Tableau Cloud seats alongside Salesforce Nonprofit Cloud

    Tableau

    Use what you have; Creator costs $75 per user/month, billed annually otherwise.

Questions

Does xmetric upload donor names or emails?

No. CSV, Excel and Parquet files and .twbx workbooks are read inside your browser tab. Nothing leaves your device unless you choose to save the workbook online.

Do we need to apply for a nonprofit discount?

Not for xmetric: it's free for everyone, with no application. Tableau and Microsoft run nonprofit programs for their paid tiers, with eligibility checks.

What is LYBUNT?

Last Year But Unfortunately Not This year: donors who gave last year and haven't given this year. It's the first list a fundraiser calls, because these donors already said yes once.

Sources