viewof plateType = Inputs.select(
[
"96-well plate (35 mL per plate)",
"48-well plate (25 mL per plate)",
"24-well plate (15 mL per plate)",
"12-well plate (10 mL per plate)",
"Custom volume"
],
{
label: "Plate type:",
value: "96-well plate (35 mL per plate)"
}
)
viewof numPlates = Inputs.range([1, 80], {
label: "Number of plates:",
value: 1,
step: 1
})
viewof customVolume = Inputs.range([1, 2000], {
label: "Custom total volume (mL):",
value: 35,
step: 1,
disabled: plateType !== "Custom volume"
})
viewof extraPercent = Inputs.range([0, 20], {
label: "Extra volume for safety (%):",
value: 10,
step: 5
})
// Calculations
plateVolumes = new Map([
["96-well plate (35 mL per plate)", 35],
["48-well plate (25 mL per plate)", 25],
["24-well plate (15 mL per plate)", 15],
["12-well plate (10 mL per plate)", 10],
["Custom volume", customVolume]
])
baseVolume = plateVolumes.get(plateType) * numPlates
totalVolume = baseVolume * (1 + extraPercent / 100)
seawaterVolume = totalVolume * 0.98666
resazurinVolume = totalVolume * 0.00222
dmsoVolume = totalVolume * 0.001
antibioticVolume = totalVolume * 0.01
// Helper function to format volumes appropriately
function formatVolume(volume) {
if (volume >= 1) {
return volume.toFixed(2) + " mL";
} else {
return (volume * 1000).toFixed(0) + " µL";
}
}
// Display results
html`
<div style="background: #f8f9fa; padding: 20px; border-radius: 8px; margin: 20px 0;">
<h3 style="color: #2c3e50; margin-top: 0;">📋 Recipe for ${totalVolume.toFixed(1)} mL Working Solution</h3>
<div style="background: white; padding: 15px; border-radius: 5px; margin: 10px 0;">
<p><strong>Experimental setup:</strong> ${numPlates} × ${plateType.split(' (')[0]}
${plateType !== "Custom volume" ? `(${baseVolume.toFixed(1)} mL base volume)` : ''}</p>
<p><strong>Safety margin:</strong> +${extraPercent}% extra volume</p>
</div>
<div style="background: white; padding: 15px; border-radius: 5px;">
<h4 style="color: #27ae60; margin-top: 0;">🧪 Required Ingredients:</h4>
<ul style="font-size: 16px; line-height: 1.8;">
<li><strong>${formatVolume(seawaterVolume)}</strong> filtered seawater (DI water with Instant Ocean adjusted to 23-25 ppt or filtered <1μm seawater)</li>
<li><strong>${formatVolume(resazurinVolume)}</strong> resazurin stock solution (from step 1 above)</li>
<li><strong>${formatVolume(dmsoVolume)}</strong> DMSO</li>
<li><strong>${formatVolume(antibioticVolume)}</strong> antibiotic solution (100x Penn/Strep & 100x Fungizone)</li>
</ul>
</div>
<div style="background: #fff3cd; padding: 10px; border-radius: 5px; margin-top: 15px; font-size: 14px;">
<strong>💡 Tip:</strong> Remember to thaw the antibiotic solution in the dark before use, and store the resazurin stock solution in a dark fridge or freezer.
</div>
</div>
`Blue Notes and Bivalves
Exploring oyster metabolism with a jazzy resazurin twist
Landing page for quick info on where we are with implementing easy resazurin metabolism assays for oysters. Please explore the Github Repo, glimpse real-time activity in from the lab here, and dive deeper with the Canonical Protocol.
📖 New: Public Summary Available
For a general audience overview of this research, including implications for the aquaculture industry and key findings to date, see our Public Summary: Resazurin Assay for Oyster Health Assessment.
Summary
This protocol uses a resazurin-based assay to measure individual metabolic responses to elevated temperature stress over a 4-5-hour period. Resazurin is a redox-sensitive dye that fluoresces as it is reduced by cellular respiration, providing a proxy for metabolic activity. Individuals are incubated in a resazurin working solution at a high temperature (e.g., ~42°C), and metabolic activity is monitored through fluorescence measurements taken at hourly intervals. Fluorescence measurements are conducted using an excitation wavelength of 530 nm (e.g., a 528/20 nm bandpass filter) and an emission wavelength of 590 nm (e.g., a 590/20 nm bandpass filter) using a fluorescence plate reader.

Highlights to date
• Metabolic rate is a reliable predictor of short-term stress resilience — oysters that suppress metabolic activity under stress tend to survive better than those with heightened activity in laboratory tests.
• Rapid assessment is possible — metabolism can be measured rapidly at at high replication, within hours using the resazurin assay, eliminating the need for long-term trials or multiple days of traditional respiration measurements.
• Genetic background drives metabolic performance — consistent family-level and line-level differences demonstrate that stress-tolerant metabolic traits are heritable.
• Assay is scalable across life stages and conditions — works effectively from tiny spat (~7 mm) to adult oysters, across temperature and salinity stressors.
• Parental and ploidy effects matter — offspring stress resistance is affected by parental histry, and diploid vs triploid oysters show distinct metabolic signatures.
• High sensitivity measurements — fluorescence measurements provide highly sensitive measurements of oyster metabolism.
Video Demo
Preparing solutions
To prepare the resazurin assay solutions, first make a stock by combining resazurin salt with water and a small amount of DMSO. Store this stock in a dark refrigerator or freezer. The working solution consists primarily of seawater (about 98.5%), with small proportions of resazurin stock (0.2%), DMSO (0.1%), and an antibiotic/antifungal solution (1%). Adjust the total volume based on the number and size of organisms being tested, ensuring animals are fully submerged. Trials are typically scaled for small (≤7 mm), medium (15–40 mm), or large (>40 mm) seed using appropriately sized containers. See our widget below to calculate the solutions required! See our Canonical Protocol for further details.
Solutions required
- Stock resazurin solution
To make the resazurin stock solution (10 mL) mix the following. We will use this solution for multiple trials.
10 mL DI water
10 µL DMSO
Store in a dark fridge or freezer.
- Working resazurin solution
First, determine the volume of resazurin required depending on the size of your organism and the container size. Here are some examples that we have used before. We recommend performing preliminary trials to ensure that a change in resazurin fluorescence can be detected over the time scale desired. This protocol was developed to detect a change in resazurin fluorescence within 5 hours in small seed (<7mm) and larger seed (10-30mm).
Small seed (<7mm length): trials conducted in 96 well plates (300uL volume in each well)
Medium seed (15-40 mm length): trials conducted in small plastic cups (20 mL volume) or 12, 24, or 48-well plates
Large seed/adults (>40 mm length): trials can be conducted in tripour cups, beakers, or plastic cups. Scale volume appropriately. The animals should be fully submerged.
Use the calculator below to calculate the formula for your working solution.
The working solution requires the following:
Filtered seawater (DI water with Instant Ocean adjusted to 23-25 ppt or filtered (<1um) seawater)
Resazurin stock solution as made above in step 1
DMSO
Antibiotic solution 100x Penn/Strep & 100x Fungizone - this should be kept frozen in a dark freezer and thawed before use (thaw in the dark or cover with aluminum foil)
Interactive Recipe Calculator
Use this calculator to automatically determine the required amounts of each ingredient based on your experimental setup.
Examples of resazurin plates




Recent Slidedecks

📄 View PCSGA 2025 talk (PDF)

Data Explorer
Direct link: http://resazur.in/explorer
Embedded below (may take a moment to load):