Fight night is upon us as Dana White delivers an enormous night of motion – and guarantees some even larger announcements.
The major event of UFC 326 will feature beloved former world champions Max Holloway and Charles Oliveira competing in a rematch of their August 2015 showdown. This time around, they’re each different men up at lightweight, and the BMF belt is on the road.
The last time these two met contained in the octagon, Holloway got the higher of his rival inside 100 seconds after Oliveira suffered an injury. Things are expected to be different this time around, although many argue the merits of this matchup as a numbered major event.
With the remainder of the cardboard equally weak, the largest moment of the night will come when MMA is welcomed back to CBS for the primary time since a 2023 Bellator event. It’s the primary time for the reason that recent UFC and Paramount deal began in January that the broadcaster will air a part of a show.
The highlight of that portion is predicted to come back when Dana White proclaims all the UFC White House card for June 14. Nevertheless, that could be in jeopardy after news that certainly one of the six bouts has fallen out just 24 hours before he was resulting from go on air.
Elsewhere on tonight’s card, Caio Borralho and Reinier De Ridder do battle within the co-main event, while Rob Font takes on Raul Rosas Jr. We may have live updates and results throughout the night from the event.
Recent start time of 5.30pm Eastern after a fight cancellation
UFC 326 loses fight as featherweight bout pulled over ‘weight management issues’
The UFC 326 card has lost a captivating prelim clash consequently of ‘weight management issues’, with the remainder of the cardboard showing up.…
Methods to watch UFC 326 FREE in America
You don’t need PPV, only a Paramount+ subscription. And in case you can’t afford that, there are 4 fights live to tell the tale CBS!
UFC White House just lost a fight on the eleventh hour
Watch the alleged moment UFC White House loses key fight 24 hours before Dana White’s announcement

Dana White has revealed that certainly one of the important thing fights for June’s massive White House showcase has just fallen out, and the moment it happened…
Welcome to the UFC 326 live blog
Good evening and welcome to the Bloody Elbow live blog from UFC 326 in Las Vegas. It’s not the best numbered event in history, but it surely could find yourself being some of the significant if Dana White makes his big White House announcement. We may have all the pieces you wish right here on this live blog, and we’d love to listen to from you on Talking Points which might be accessed above
const postId = 296440;
let modifiedDate = “2026-03-07T22:13:14+00:00”;
// creates a timestamp cachebuster rounded to nearest 30 seconds threshold
function getLiveBlogCacheBusterTimestamp() {
const now = recent Date();
// Get current UTC time components
const minutes = now.getUTCMinutes();
const seconds = now.getUTCSeconds();
// Round as much as the closest 30 seconds
const roundedSeconds = Math.ceil(seconds / 30) * 30;
// Adjust minutes and seconds
let roundedDate = recent Date(Date.UTC(
now.getUTCFullYear(),
now.getUTCMonth(),
now.getUTCDate(),
now.getUTCHours(),
minutes,
roundedSeconds
));
// Convert to Unix timestamp
return Math.floor(roundedDate.getTime() / 1000);
}
function getPollingEndpointUrl(postId) {
const baseUrl = “/wp-json/grv-live-blog/v1/post-modified-date”;
const cacheBuster = getLiveBlogCacheBusterTimestamp();
return `${baseUrl}?post_id=${postId}&t=${encodeURIComponent(cacheBuster)}`;
}
function getUpdatedEventEndpointUrl(postId) {
const baseUrl = “/wp-json/grv-live-blog/v1/get-updated-events”;
const cacheBuster = getLiveBlogCacheBusterTimestamp();
return `${baseUrl}?post_id=${postId}&t=${encodeURIComponent(cacheBuster)}`;
}
function showRefreshButton() {
const refresh_btn = document.getElementById(“glb-btn”);
refresh_btn.style.display = “block”;
}
function hideRefreshButton() {
const refresh_btn = document.getElementById(“glb-btn”);
refresh_btn.style.display = “none”;
}
function jumpToLatestEvent() {
hideRefreshButton();
const element = document.querySelector(“.wp-block-grvmedia-grv-live-blog”);
// Scroll to the element
if (element) {
element.scrollIntoView({ behavior: “smooth”, block: “start” });
}
}
function createPointItem(item) {
// Create the
const li = document.createElement(“li”);
li.appendChild(document.createTextNode(item.headline));
const a = document.createElement(“a”);
a.href = `#${item.anchorId}`; // Set the href attribute
a.innerHTML = `View post
`; // Set the text content
li.appendChild(a);
return li;
}
function addScriptSrcToHead(src) {
let s = document.createElement(“script”);
// expectation is that that is the primary script element in the top
let insertion = document.getElementsByTagName(“script”)[0];
s.async = true;
s.src = src;
insertion.parentNode.insertBefore(s, insertion);
}
function refreshScripts( fragment ) {
let scripts = fragment.querySelectorAll(“script”);
for ( let script of scripts ) {
let freshScript = document.createElement(“script”);
// copy attributes
let attrs = script.attributes;
for ( let attr of attrs ) {
freshScript.setAttribute( attr.name, attr.value );
}
// copy inner script code. #718, #782
freshScript.innerHTML = script.innerHTML;
script.parentNode.replaceChild( freshScript, script );
}
}
function reverseEvents(updated_events){
const events = Object.entries(updated_events);
// Reverse the order of the entries
events.reverse();
// Convert the reversed entries back to an object
return Object.fromEntries(events);
}
function fetchUpdatedEvents() {
const apiUrl = getUpdatedEventEndpointUrl(postId);
fetch(apiUrl)
.then(response => response.json())
.then(updatedEvents => {
// Find the events container
let key_points = document.querySelector(“.grv-live-blog-key-points”);
// if we had no key points to start out with but have some now we want to create the div and ul
// for it to populate
if(updatedEvents.key_points.length > 0) {
if (!key_points) {
// Element doesn’t exist, create it
key_points = document.createElement(“div”);
key_points.className = “grv-live-blog-key-points”;
// Create and append
to the brand new element
const heading = document.createElement(“h5”);
heading.textContent = “Key points”;
key_points.appendChild(heading);
// Create and append
- to the brand new element
const ul = document.createElement(“ul”);
ul.className = “grv-live-blog-key-points-list”;
key_points.appendChild(ul);
const glb_wrapper = document.getElementById(“glb-wrapper”);
if (glb_wrapper) {
// Insert the brand new element before the wrapper
glb_wrapper.parentNode.insertBefore(key_points, glb_wrapper);
}
}
const key_points_list = document.querySelector(“.grv-live-blog-key-points-list”);
key_points_list.innerHTML = “”;
// Update the important thing points
updatedEvents.key_points.forEach(point => {
const point_item = createPointItem(point);
key_points_list.appendChild(point_item);
});
// else we’ve got no key points so lets remove the list
}else{
if (key_points) {
key_points.remove();
}
}
// now take care of the events themselves…
const events_container = document.querySelector(“.wp-block-grvmedia-grv-live-blog”);
// get a map of the prevailing events keyed by id
const existingEvents = Array.from(events_container.querySelectorAll(“.wp-block-grvmedia-grv-live-blog-event”))
.reduce((map, event) => {
map[event.id] = event;
return map;
}, {});
// get the prevailing and updated keys so we will compare
const existingKeys = Object.keys(existingEvents);
const updatedKeys = Object.keys(updatedEvents.updated_blocks);
// find events which can be in existing but not in updated
const keysToRemove = existingKeys.filter(key => !updatedKeys.includes(key));
// remove any events which have been deleted
keysToRemove.forEach(key => {
// Find the element with the corresponding id
const element = document.getElementById(key);
// Remove the element if it exists
if (element) {
element.remove();
}
});
// reverse the events in order that they are in the fitting order if we add multiple…
updatedEvents.updated_blocks = reverseEvents(updatedEvents.updated_blocks);
// loop through each updated event
Object.values(updatedEvents.updated_blocks).forEach(updatedEvent => {
// create temp elem so we will hydrate it from our rendered event after which access the id etc
const parser = recent DOMParser();
const tempEvent = parser.parseFromString(updatedEvent,”text/html”);
// Select the event from our temp container
const eventElement = tempEvent.querySelector(“.wp-block-grvmedia-grv-live-blog-event”);
// Extract the id
const eventId = eventElement ? eventElement.id : null;
// Using a fraction allows us to refresh scripts before attaching to dom
let frag = document.createDocumentFragment();
if (existingEvents[eventId]) {
frag.append( …eventElement.childNodes );
} else {
frag.append( eventElement );
}
refreshScripts( frag );
// if its an existing event replace the content of the event so we dont cause a jump
if (existingEvents[eventId]) {
// get the prevailing event
const event = document.getElementById(eventId);
event.style.minHeight = event.offsetHeight + “px”;
// update its innerHTML and sophistication incase we’ve got modified to featured or breaking etc
event.className = eventElement.className;
event.replaceChildren(…frag.childNodes);
const seeMore = event.querySelector(“.see-more-wrapper.lazy”);
let seeMoreSrc = seeMore?.getAttribute(“data-src”);
if (seeMoreSrc) {
if ( seeMoreSrc.indexOf(‘instagram’) != -1 && window.instgrm ) {
window.instgrm.Embeds?.process();
} else {
addScriptSrcToHead(seeMoreSrc);
}
}
// if its a brand new event add to the highest – TODO: sort order if multiple recent events
} else {
// Create a brand new event
events_container.insertBefore(frag, events_container.firstChild);
}
});
})
.catch(error => {
console.error(“Error fetching updated blocks:”, error);
});
}
document.addEventListener(“DOMContentLoaded”, function() {
function startPolling(postId) {
function fetchPostModifiedDate() {
const url = getPollingEndpointUrl(postId);
fetch(url)
.then(response => response.json())
.then(data => {
// if our post modified date has modified we’ve got an update
if(modifiedDate != data.modified_date) {
// update the modified time to be the brand new modified time
modifiedDate = data.modified_date;
// show the button so a user can refresh
fetchUpdatedEvents();
showRefreshButton();
}
})
.catch(error => {
console.error(“Error fetching post modified date:”, error);
});
}
// Set interval to fetch every 30 seconds
setInterval(fetchPostModifiedDate, 30000); // 30 seconds
}
// Start polling
startPolling(postId);
const refreshButton = document.getElementById(“glb-btn”);
refreshButton.addEventListener(“click”, jumpToLatestEvent);
});

