You changed a title tag to improve click-through rate. Did it work, or did you just get lucky with a ranking shift? SEO Title A/B Testing compares your Google Search Console data from before and after the change. Other changes may also affect CTR, so the result shows a link. It does not prove that the title alone caused the change. Upload two CSV exports (control period and treatment period) to get an estimate and a range.
Worked Example (Simulated): Did Clicks per View Rise After the Title Changed?
Question: Did clicks per view rise after the title changed?
Inputs: Simulated data, seed 2718. The script draws click counts for a control period and a test period with 1,000 views each. It builds in a control click rate (CTR) of 5.0% and a test rate of 6.0%, a rise of 1 point.
Method: Divide clicks by views in each period. Subtract the control CTR from the test CTR. The range is a rough 95% span for the change. The last two lines of the script work out how often a fresh draw at the built-in rates would show a clear rise (normal approximation).
import numpy as np
from scipy.stats import norm
# Simulated page-level click counts for two equal-length periods.
seed = 2718
rng = np.random.default_rng(seed)
impressions = 1000
control_rate = 0.050
treatment_rate = 0.060
control_clicks = int(rng.binomial(impressions, control_rate))
treatment_clicks = int(rng.binomial(impressions, treatment_rate))
control_ctr = control_clicks / impressions
treatment_ctr = treatment_clicks / impressions
change = treatment_ctr - control_ctr
se = np.sqrt(control_ctr * (1 - control_ctr) / impressions
+ treatment_ctr * (1 - treatment_ctr) / impressions)
low = change - 1.96 * se
high = change + 1.96 * se
print(f"Simulated data, seed {seed}")
print(f"Control: {control_clicks} clicks / {impressions} impressions "
f"= {control_ctr:.3%} CTR")
print(f"Treatment: {treatment_clicks} clicks / {impressions} impressions "
f"= {treatment_ctr:.3%} CTR")
print(f"Raw CTR change: {change * 100:.2f} percentage points")
print("Approximate 95% interval for the change: "
f"{low * 100:.2f} to {high * 100:.2f} percentage points")
# Chance that a fresh draw at the built-in rates gives a clear rise
# (normal approximation, two-sided 95% rule).
built_in = treatment_rate - control_rate
se_built_in = np.sqrt(control_rate * (1 - control_rate) / impressions
+ treatment_rate * (1 - treatment_rate) / impressions)
power = norm.sf(1.96 - built_in / se_built_in)
print(f"Built-in change: {built_in * 100:.2f} percentage points")
print(f"Chance of a clear rise in one fresh draw: about {power:.0%}")
Printed output:
Simulated data, seed 2718
Control: 56 clicks / 1000 impressions = 5.600% CTR
Treatment: 45 clicks / 1000 impressions = 4.500% CTR
Raw CTR change: -1.10 percentage points
Approximate 95% interval for the change: -3.02 to 0.82 percentage points
Built-in change: 1.00 percentage points
Chance of a clear rise in one fresh draw: about 16%
Result: The script builds in a rise from 5.0% to 6.0%. This draw shows a fall of 1.10 points (56 clicks, then 45), with a range of -3.02 to 0.82 that covers zero. With 1,000 views in each period, a built-in 1-point rise reaches a clear result in only about 16% of fresh draws, roughly 1 run in 6. This draw is a chance result against a built-in rise. That is low power, not no change.
Limit: This is an estimate. It does not prove that the title led to a change. This example does not account for rank or other changes over time.
What Is SEO Title A/B Testing?
Traditional A/B testing shows different variants to different visitors simultaneously and compares conversion rates. SEO title testing is different because you cannot show two different title tags to Google at the same time. You change the title and compare the before period (control) against the after period (treatment). This introduces a fundamental problem: other things change between the two periods. Your ranking might shift, search volume might fluctuate seasonally, or a competitor might enter or exit the SERP. Any of these could change your CTR independently of your title change.
Raw CTR can change with rank. If your page moved from position 5 to position 3 during the treatment period, your CTR could increase even if your title had zero effect. A rank shift may affect CTR even if the title has no effect, so read any before and after change with that in mind.
The worked example above compares one page.
When to Use SEO Title A/B Testing
Run this analysis once the changed title has had time to collect plenty of impressions. Short periods may not have enough impression data for a reliable estimate. Longer periods increase the risk of confounding factors (algorithm updates, seasonal shifts, competitor changes) contaminating your results.
The ideal workflow is: identify pages with suboptimal CTR using the Quick Wins module, craft improved title tags, deploy them, wait, then export GSC data for the control period (same duration before the change) and treatment period (after the change) and run this analysis. This creates a disciplined experiment cycle where every title change gets measured and every result informs the next batch of changes.
This module is also valuable for checking SEO copy at scale. If your content team regularly updates title tags as part of content refreshes, running Title A/B Testing after each batch quantifies whether those changes improved search performance. Over time, you develop an empirical understanding of what title patterns work for your audience, questions vs. statements, including numbers vs. not, brand name first vs. last.
What Data Do You Need?
This is a multi-dataset module requiring two CSV files:
Control dataset: GSC page-level data from the period before your title change. Required columns: date, page (URL), variant (label like "control"), experiment_id (identifier for the experiment), impressions, clicks, ctr, avg_position, position_adjusted_ctr, and top_query (the highest-impression query for that page).
Treatment dataset: Same columns, same pages, from the period after your title change. The variant column should be labeled "treatment" and the experiment_id should match the control dataset for the same pages.
Additional parameters: confidence_level (default 0.95: the statistical confidence threshold), min_impressions (default 10: experiments with fewer impressions are flagged as insufficient data), and decision_threshold (default 0.05: the p-value threshold for declaring a result statistically significant).
How to Read the Report
The report contains these sections:
Forest Plot. The signature visualization of this report. Every experiment (page or query) is shown as a horizontal line with a point estimate and confidence interval. If the confidence interval crosses zero, the result is inconclusive. If the entire interval is above zero, CTR was higher in the treatment period. If it is below zero, CTR was lower. The vertical dashed line at zero represents "no effect." You can read the entire portfolio's results at a glance.
Raw Comparison. Side-by-side metrics for control vs. treatment: impressions, clicks, CTR, and position for each page. No statistical adjustment, just the raw numbers. This is where you verify that the data makes sense before trusting the statistical analysis. If impressions dropped by 90% in the treatment period, something external happened (seasonal drop, deindexing, etc.) and the comparison may not be fair.
Position Scatter. A scatter plot showing the relationship between position change and CTR change for each experiment. This visualizes the confounding problem: pages that moved up in position tend to have higher CTR regardless of title changes. The scatter plot helps you see the raw relationship and identify outliers.
Statistical Summary. Aggregate statistics across all experiments: overall win rate, average effect size, and median confidence interval width.
Recommendations. AI-generated action items based on the results, which title changes to keep, which to revert, and what patterns from winning titles to apply to future experiments.
TL;DR. Executive summary with the headline verdict and top findings.
When to Use Something Else
If you are evaluating a batch of many experiments at once and want portfolio-level metrics (win rate, aggregate ROI, pattern detection across experiments), use the GSC Portfolio Analysis module. It is optimized for batch evaluation, while Title A/B Test is optimized for deep single-experiment analysis.
If you have not run any experiments yet and want to identify which pages are the best candidates for title optimization, start with the GSC Quick Wins module. It finds pages ranking in positions 4-20 with high impressions but below-expected CTR, the ideal targets for title experiments.
If you want to track ranking changes over time without running controlled experiments, use the Ranking Changes module. It detects which pages gained or lost positions between two time periods, without the experiment framework.
Your turn
Bring your own data and the question you actually need answered.
MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai