Salaheldinaz
Table of contents
Track the Unseen - Spot Change Anywhere, Any Time

Track the Unseen - Spot Change Anywhere, Any Time

Open-Source Intelligence Guide

The QGIS plugin featured in this guide was developed by Salaheldinaz. It was tested extensively over the past few days by Mostafa. We put together this walkthrough to help others get started.

What Is This About?

Imagine you could look at any place on Earth and ask: “Has something changed here in the last few months?” — a building destroyed, a new structure built, a road carved through a forest. That is exactly what the PWTT QGIS Plugin lets you do, for free, from your own computer.

PWTT stands for Pixel-Wise T-Test. It was originally developed by researcher Ollie Ballinger and used by Bellingcat to map war damage in places like Ukraine, Gaza, and Iran — places where governments often block access to optical satellite imagery. The method was published as a peer-reviewed paper in Remote Sensing of Environment and validated across over 2 million labeled buildings in 30 cities.

The plugin featured in this guide takes that same technology and makes it more practical for everyday use: you can save your areas of interest, create monitoring projects, run batch analysis, and view time-series data — all inside QGIS on your own machine.

Why radar and not regular photos?

Regular satellite photos (optical imagery) can be blocked by clouds, only work during daytime, and governments can sometimes restrict access. Radar (SAR) works through clouds, at night, and no government can stop the European Space Agency from collecting this data. It is a public good, freely available to everyone.

How PWTT Works?

(The Simple Version)

The European Space Agency operates a satellite called Sentinel-1. Instead of taking photos like a camera, it sends pulses of microwave energy toward the ground and measures what bounces back — like sonar, but from space.

Sentinel-1 SVG illustration

Buildings, roads, and structures bounce the signal back in a specific way. When a building is destroyed, or a new one is built, the bounce pattern changes.

The PWTT method works in three simple steps:

1 Establish a 'normal' baseline
The plugin collects months of radar data from before your date of interest. This builds a picture of what the area normally looks like to the satellite.
2 Collect an 'after' window
It then collects radar data from after your date of interest — the period you want to investigate.
3 Compare them pixel by pixel
For every single pixel, the plugin runs a statistical test asking: “Did this spot change more than you would expect by normal variation?” Pixels that changed significantly get flagged. The result is a color-coded map where purple/red areas show the strongest changes.

Not just for war damage

While the original tool was designed to detect destroyed buildings, the same principle works in reverse. If something new appears — a military base, or a construction site — the radar signal changes just the same. This plugin can detect any significant physical change on the ground.

What This Looks Like in Practice

To give you a sense of what the plugin can actually reveal, here are two real examples. In both cases, the PWTT plugin flagged areas of change from radar data alone — then optical satellite imagery from Planet Labs was used to confirm what happened on the ground.

Example 1: Detecting change in a desert compound

Amber variant
Blue baseline
Drag to compare Before (28 August 2025) on the left with After (3 October 2025) on the right.
Before (28 August 2025) After (3 October 2025)

Matan As Sarra, Libya | 21.688°N, 21.828°E.

The PWTT time series chart for this location shows slight deviations in the VV radar signal on approximately 2 April 2025 and 12 September 2025 - both data points dip noticeably below the cluster of neighboring readings. Optical satellite imagery from Planet Labs confirms a visible change on the ground around that date. Imagery source: Planet Labs.

In this example, the plugin’s time series chart showed a subtle dip in the VV radar signal around September 2025. The deviation was small — not enough to cross the tool’s statistical significance threshold on its own — but it stood out from the otherwise stable baseline. A closer look using optical imagery confirmed a visible change at the site between August and October 2025.

matan orbit normalized
View time series option in the plugin

Key takeaway

The PWTT results do not always need to cross the statistical threshold to be useful. Even subtle deviations can serve as leads — but they must always be verified with additional sources like optical imagery before drawing conclusions.

Example 2: Tracking new construction near an airstrip

Amber variant
Blue baseline
Drag to compare Before (16 May 2025) on the left with After (11 April 2026) on the right.
Before (16 May 2025) After (11 April 2026)

Asosa airport, Ethiopia.

New construction detected. The PWTT plugin flagged several change clusters (red/yellow pixels) near an airstrip. The optical imagery confirms new structures appeared between May 2025 and April 2026. The plugin detected these changes using radar data alone; the optical imagery serves as ground-truth confirmation. Imagery source: Planet Labs.

In this second example, the plugin flagged several clusters of change (shown in red and yellow) near an airstrip in a rural area. Comparing optical imagery from May 2025 (before) and April 2026 (after) shows that the detected changes correspond to new structures and ground disturbance — evidence of construction activity that would have been difficult to spot without monitoring.

These examples illustrate the two sides of the plugin’s value: it can detect both destruction (things disappearing) and construction (things appearing). For journalists and researchers, this means you can use a single tool to monitor any kind of physical change in an area of interest — from conflict damage to clandestine building activity.


What You Need Before Starting

Before installing the plugin, you will need three things. All of them are free.

QGIS 3.22+

QGIS is a free, open-source geographic information system. If you do not have it installed, download it first. The plugin runs inside QGIS.
Download QGIS →

Copernicus account

Copernicus is the EU’s Earth observation programme. A free account unlocks satellite data through the openEO or Local backends.
Create account →

Google Earth Engine

Google’s planetary-scale analysis platform. A free account is needed for the GEE backend (recommended for beginners — the fastest option). Setup takes a few extra steps — see the detailed walkthrough below.
Sign up →

🤔 Which backend should I pick?

The plugin supports two processing backends: Google Earth Engine (cloud-based, fast, recommended for beginners) and openEO (cloud-based via Copernicus). If you are just starting out, go with Google Earth Engine.

Detailed Walkthrough

Setting Up Google Earth Engine

Google Earth Engine requires a bit more setup than just creating an account. You need to create a Google Cloud project, enable the Earth Engine API, set up OAuth credentials, and register the project with Earth Engine. It sounds complicated, but it is mostly clicking through forms. Follow these steps exactly.

Part A: Enable the Earth Engine API

1 Go to Google Cloud Console
Open console.cloud.google.com and sign in with the same Google account you used to sign up for Earth Engine. If you do not have a Google Cloud project yet, you will be prompted to create one. Give it any name you like (e.g., “pwtt”).
Registering Your Project with Earth Engine

Navigate to Earth Engine → Configuration in your Google Cloud Console. You will see two options: Register for commercial use and See if you are eligible for noncommercial use. For journalism and research, click “Get started” under noncommercial use.

The registration walks you through five steps:

  1. Organization type: Select what best describes you (e.g., “Other” for individual journalists).
  2. Noncommercial eligibility: Choose “Individual research or noncommercial use.” In the description field, briefly describe your use (e.g., “OSINT research” or “PWTT damage assessment”).
  3. Plan: Select “Community” — this is the free tier with 150 EECU-hour limit, which is sufficient for most investigative work. No billing account is required.
  4. Describe your work: Check the category that fits (e.g., “Human Rights”).
  5. Review and Register: Review your selections and click Register.

 Google Earth Engine API registration page

2 Enable the Google Earth Engine API
Navigate to APIs & Services in the left sidebar. Click Library, search for “Google Earth Engine API”, and click Enable. Once enabled, you should see the API details page showing the status as “Enabled.”
 Google Earth Engine API page — Status: Enabled

You are now set up

Your Google Cloud project has the Earth Engine API enabled, OAuth credentials configured, and is registered for noncommercial Earth Engine access. When you authenticate from the PWTT plugin in QGIS, use this project name and the downloaded credentials JSON file.

Before you can create credentials, Google requires you to set up an “OAuth consent screen.” This is a one-time setup for your project.

3 Open the Google Auth Platform
In the left sidebar, click OAuth consent screen (or navigate to Google Auth Platform → Overview). You will see a message saying “Google Auth Platform not configured yet.” Click “Get started”.
4 Fill in App Information
In the Project configuration form, Step 1 asks for App Information. Enter any name in the App name field (e.g., “PWTT”) and select your email from the User support email dropdown. Click Next.
5 Set Audience to External
In Step 2, select “External” and click Next. This means any Google account can use it (your own account is enough).
6 Finish the consent screen
Complete the remaining steps (Contact Information and Finish). On the final step, check the box to agree to the Google API Services User Data Policy, then click Continue and Create. You should see a green “OAuth configuration created!” confirmation.

Part C: Create OAuth Client Credentials

7 Create an OAuth client
From the OAuth Overview page, click “Create OAuth client”. On the next screen, select “Desktop app” from the Application type dropdown. Give it any name (e.g., “Pwtt2”). Click Create.
8 Save your credentials
A dialog will appear showing your Client ID and Client secret. Click “Download JSON” to save these credentials to a file on your computer. You will need this file later when authenticating from QGIS. Keep this file private — do not share it publicly.

Important

Your Client ID and Client secret are like passwords — they grant access to your Google Cloud project. Never share them publicly or include them in screenshots you publish.
9 Verify credentials are listed
Back on the Earth Engine API Credentials tab, you should now see your new OAuth client listed under “OAuth 2.0 Client IDs.” This confirms everything is set up correctly on the Google Cloud side.

Setting Up Copernicus account

Setting up a Copernicus account is quick and straightforward. Simply visit the Copernicus registration page to create your account. Once registered and logged in, you can easily generate your OAuth credentials by going to the account settings section.


Installing the Plugin in QGIS

Installing the PWTT plugin in QGIS can be done in two ways. If the plugin is not available in the repository or you need a specific version, you can also install it manually by downloading the plugin as a .zip file and installing it via the “Install from ZIP” option in the QGIS Plugin Manager.

1 official QGIS plugin repository
The easiest and recommended method is to install it directly from the official QGIS plugin repository. Plugin page on QGIS plugins website _ qgis-plugin-interface
2 Installing the plugin from ZIP file

If the plugin is not available in the repository or you need a specific version, you can also install it manually by downloading the plugin as a .zip file from here and installing it via the “Install from ZIP” option in the QGIS Plugin Manager.

_ qgis-plugin-interface


After installing the Plugin

Open the PWTT panel by clicking the new PWTT icon in your toolbar (or go to Plugins → PWTT). If the plugin tells you that some Python packages are missing, click the “Install Dependencies” button. This downloads small helper libraries the plugin needs to talk to the satellite data servers.

In the PWTT panel, select your preferred backend (e.g., Google Earth Engine). Click Authenticate. A browser window will open asking you to log in with your Google account and authorize access. Follow the prompts.

For Copernicus/openEO: enter your Copernicus credentials directly or use the browser-based OIDC login.


Running Your First Analysis

plugin interface
1 Draw your Area of Interest (AOI)
In the PWTT panel, click “Draw rectangle on map”. Your cursor will change — click and drag on the map to draw a rectangle around the area you want to analyze. Keep it small for your first test (a city block or neighborhood).
2 Set your dates

Set two dates:

War/Event start date — This is the date of the event you are investigating. Everything before this date becomes your “normal” baseline. (Despite the name, this works for any event — not just wars.)

Inference start date — This is when the “after” comparison begins. It must be the same as or later than the war start date.

3 Choose your settings
For your first run, the defaults work well: 12 months of pre-event data, 2 months of post-event data, and a T-statistic cutoff of 3.3. A higher cutoff means the plugin only flags more extreme changes (fewer results, but more confident). A lower cutoff flags more changes (more results, but more noise).
4 Pick an output folder and run
Select an output directory where results will be saved, then click Run. A confirmation dialog will show your settings — review them and confirm. The analysis runs in the background; you will see progress in the QGIS task bar and the PWTT Job Log dock.
5 Read your results

When the job finishes, a color-coded layer appears on your map. The default color scheme is:

🟣 Purple = strongest change signal (most significant)

🔴 Red = strong change

🟡 Yellow = moderate change (just above the detection threshold)

Transparent areas mean no significant change was detected.

Analysis result

What the Plugin Can Do

This plugin is a QGIS implementation of the original PWTT tool. Here is what it adds for everyday monitoring:

Runs locally on your machine No need for a remote server or command line. Everything works inside the QGIS interface you already know.
Save preferred areas of interest Draw your AOI once, save it, and come back to it later without re-drawing.
Create monitoring projects Organize different areas into projects. This speeds up repeat monitoring — you set up once, then re-run with new dates whenever you need an update.
Time-series view Using the Earth Engine backend, you can view a timeline chart showing when changes happened — not just where. This helps pinpoint the exact period of an event.
Automatic splitting of large areas If your area of interest is very large, the plugin automatically splits it into manageable tiles so the analysis does not crash or time out.
Export and import AOIs Share your areas of interest with colleagues or import areas that others have prepared. Useful for collaborative investigations.
Run multiple areas simultaneously Queue up several areas and let them process in parallel, rather than running them one at a time.

Limitations to Keep in Mind

No tool is perfect. Understanding the limitations will help you avoid drawing wrong conclusions from your results. You can view the limitations in the original published paper.

Tips for Beginners

Start small. For your first run, pick a well-known location where you already know something changed (a documented demolition, a construction site). This lets you verify the results and build confidence in the tool.

Use longer baselines. The default 12-month pre-event window works well in most cases. A longer baseline gives the statistical test more data to establish “normal,” which reduces false positives.

Cross-reference everything. This tool is a starting point for investigation, not a final verdict. Always compare your findings with optical satellite imagery (Google Earth, Sentinel-2), news reports, and other open-source intelligence.

The T-statistic cutoff is your sensitivity dial. The default of 3.3 is a good balance. Lower it (e.g., 2.5) to catch more subtle changes (but more noise). Raise it (e.g., 4.0 or 5.0) to only see the most dramatic changes.


Further Reading

The original research paper explaining the PWTT method in detail: “Open access battle damage detection via Pixel-Wise T-Test on Sentinel-1 imagery” — published in Remote Sensing of Environment, 2025.

Bellingcat’s practical application of the tool: “When Satellite Imagery Goes Dark: New Tool Shows Damage in Iran and the Gulf” — April 2026.

The original PWTT code repository by Ollie Ballinger: github.com/oballinger/PWTT

This guide is intended for educational and journalistic purposes. Always verify findings with multiple sources before drawing conclusions. a construction site, a deforested area — the radar signal changes just the same. This plugin can detect any significant physical change on the ground.