- Incident leads to 2,000 flight cancellations and days of disruption.
- Air traffic control outage costs airlines costing millions of pounds.
- Outage follows shutdown in August 2023 causing travel chaos.
British air traffic control operator NATS said on Friday an outage which affected hundreds of thousands of passengers last week was caused by a software defect.
The incident led to 2,000 flight cancellations and days of disruption, costing airlines millions of pounds as they scrambled to get crews and aircraft back in place and refund passengers.
NATS CEO Martin Rolfe said the shutdown was not related to a problem in 2023 which also caused widespread disruption, nor was it linked to military intervention — as reported by some media outlets last week. He added that safety was at no point compromised during the incident.
“This was a software issue in a specific part of our flight data system, that we have traced to a small subsection of coding,” he said. “The issue has been identified and mitigation is in place while a permanent fix is safety tested and deployed.”
Transport minister Heidi Alexander, who had last week demanded NATS produce a report on the matter and also ordered an independent review by the Civil Aviation Authority, said the disruption was “completely unacceptable”.
“We need to urgently understand why this issue was not discovered and fixed before it caused chaos,” she said in a statement. “It is crucial that our national infrastructure is fit for the future.”
The incident followed a shutdown in August 2023 which caused travel chaos, costing airlines £100 million ($136 million). A smaller technical issue which NATS was behind in July 2025 also caused 150 cancellations.
Ryanair, Europe’s biggest airline, has repeatedly called for Rolfe to resign since the 2023 failure.
The NATS report on the latest incident was triggered by a request for an identification code from an aircraft being followed by a request for a higher-priority activity, pausing the first request.
“Had the higher-priority request arrived even one millisecond earlier or later, the update would have completed normally,” the report said.
let firebaseLoaded = false; function loadFirebaseOnce() { if (firebaseLoaded) return; firebaseLoaded = true; import("https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js").then(() => { //import("https://www.gstatic.com/firebasejs/8.10.1/firebase-analytics.js"); import("https://www.gstatic.com/firebasejs/8.10.1/firebase-messaging.js").then(() => { import("https://www.geo.tv/assets/front/ui/js/subscribe_user.js?v=553222"); }); }); }
window.addEventListener("scroll", loadFirebaseOnce, { once: true }); window.addEventListener("mousemove", loadFirebaseOnce, { once: true }); window.addEventListener("click", loadFirebaseOnce, { once: true });
//setTimeout(function(){ $('.medium-insert-images').find('figure').show() }, 3000); var loadDeferredJS = function() {
var lazyloadjs = ['https://www.geo.tv/assets/front/js/lazysizes.min.js'];
var alljs = ['https://www.geo.tv/assets/front/js/ui/thirdparty.js'];
var jqueryjs = ['https://www.geo.tv/assets/front/js/ui/jquery.min_new.js']; var bootstrapjs = ['https://www.geo.tv/assets/front/js/ui/bootstarp.js']; var sliderjs = ['https://www.geo.tv/assets/front/js/ui/swiper.min.js'];
var alljscustom = ['https://www.geo.tv/assets/front/js/ui/my.js','https://www.geo.tv/assets/front/js/mycustom.js'];
setTimeout(function(){ jqueryjs.forEach(function (item,index) { var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.src = item; document.body.appendChild(scriptElement); }); }, 1000);
const jqueryIntervalcheck = setInterval(function () { if(typeof jQuery !== "undefined"){ clearInterval(jqueryIntervalcheck);
setTimeout(function(){ sliderjs.forEach(function (item,index) { if(item == 'https://www.geo.tv/assets/front/js/ui/swiper.min.js'){ var story_embed_gallery = $('.story-area').find('.embedgallery').length; //var story_embed_gallery = 0; if(parseInt(story_embed_gallery) > 0){ var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.src = item; document.body.appendChild(scriptElement); } } }); }, 100);
setTimeout(function(){ alljscustom.forEach(function (item,index) { var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.src = item; document.body.appendChild(scriptElement); }); }, 1300);
if($('.infogram-embed').length > 0 || $('embedinfogram').length > 0) { !function (e, t, n, s) { var i = "InfogramEmbeds", o = e.getElementsByTagName(t)[0], d = /^http:/.test(e.location) ? "http:" : "https:"; if (/^\/{2}/.test(s) && (s = d + s), window[i] && window[i].initialized)window[i].process && window[i].process(); else if (!e.getElementById(n)) { var a = e.createElement(t); a.async = 1, a.id = n, a.src = s, o.parentNode.insertBefore(a, o) } }(document, "script", "infogram-async", "https://e.infogram.com/js/dist/embed-loader-min.js"); }
if($('.flourishClass').length > 0) { var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://public.flourish.studio/resources/embed.js"; document.body.appendChild(scriptElement); }
if($('.apester-media').length > 0) { var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://static.apester.com/js/sdk/latest/apester-sdk.js"; document.body.appendChild(scriptElement); }
if($('.twitter-tweet').length > 0) { var tweetObj = document.getElementsByClassName('tweetPost'); var counter_tweet = 0; if (tweetObj.length == 0) { tweetObj = document.getElementsByClassName('twitter-tweet'); $.each(tweetObj, function (i, v) { $(this).attr('id', 'twitter-post-widget-' + i); }); } else { $.each(tweetObj, function (i, v) {
if($(this).find('.twitter-tweet').length > 0){ $(this).find('.twitter-tweet').attr('id', 'twitter-post-widget-' + counter_tweet); counter_tweet++; } }); } $.getScript('https://platform.twitter.com/widgets.js', function () { var k = 0; var tweet = document.getElementById('twitter-post-widget-' + k); var tweetParent, tweetID;
while (tweet) { tweetParent = tweet.parentNode; //tweetID = tweet.dataset.tweetId; tweetID = tweetParent.getAttribute("id"); if(tweetID === null){ tweetID = tweet.dataset.tweetId; } //var tweetVideoClass = tweet.getAttribute('class').split(' ')[0]; $(tweet).remove();
twttr.widgets.createTweet( tweetID, tweetParent ); k++; tweet = document.getElementById('twitter-post-widget-' + k); } }); /*==============*/ var tweetObjVid = document.getElementsByClassName('tweetVideo'); var counter_tweet = 0; if (tweetObjVid.length == 0) {
tweetObjVid = document.getElementsByClassName('twitter-video'); $.each(tweetObjVid, function (i, v) { $(this).attr('id', 'twitter-vid-widget-' + i); });
} else {
$.each(tweetObjVid, function (i, v) { if($(this).find('.twitter-video').length > 0){ $(this).find('.twitter-tweet').attr('id', 'twitter-vid-widget-' + counter_tweet); counter_tweet++; } });
} $.getScript('//platform.twitter.com/widgets.js', function () { var v = 0; var tweetVid = document.getElementById('twitter-vid-widget-' + v); var tweetParentVid, tweetIDVid; while (tweetVid) { tweetParentVid = tweetVid.parentNode; //tweetIDVid = tweetVid.dataset.tweetId; tweetIDVid = tweetParentVid.getAttribute("id"); if(tweetIDVid === null){ tweetIDVid = tweet.dataset.tweetId; } $(tweetVid).remove(); twttr.widgets.createVideo( tweetIDVid, tweetParentVid ); v++; tweetVid = document.getElementById('twitter-vid-widget-' + v); } }); }
if($('.instagram-media').length > 0){ var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://platform.instagram.com/en_US/embeds.js"; document.body.appendChild(scriptElement); }
if($('.tiktok-embed').length > 0){ var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://www.tiktok.com/embed.js"; document.body.appendChild(scriptElement); }
if($('.threadsPost').length > 0){ var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://www.threads.net/embed.js"; document.body.appendChild(scriptElement); }
if($('.fb-video').length > 0 || $('.fb-post').length > 0){ var container_width = $(window).width(); if(container_width < 500){ if($('.fb-video').length > 0){ let embed_url = $('.fb-video').attr('data-href'); let htmla="
'; $('.fb-video').parent('.embed_external_url').html(htmla); } else{ let embed_url = $('.fb-post').attr('data-href'); let htmla="
'; } }
$('body').prepend('
');
var scriptElement=document.createElement('script'); scriptElement.type="text/javascript"; scriptElement.setAttribute="async"; scriptElement.src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.11&appId=580305968816694"; document.body.appendChild(scriptElement); } } },100); };
var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
var loadDeferredJSCaptcha = function() { var addJSNode = document.getElementById("captchejs"); var replacement = document.createElement("div"); replacement.innerHTML = addJSNode.textContent; document.body.appendChild(replacement); addJSNode.parentElement.removeChild(addJSNode); };
window.addEventListener('load', loadDeferredJS); //window.addEventListener('load', loadDeferredJSCaptcha);