We can all build our own tools now: what Claude and GPT-6 Astra mean for researchers (and some apps worth a look)

Back in March 2011 I wrote a short post about Google Labs’ anatomy tool. At the time, being able to rotate a 3D human body in a web browser felt like science fiction, and it had taken one of the biggest technology companies in the world to build it. Fifteen years later, a single developer released an open-source anatomy explorer that takes the human body apart into 2,234 individually selectable pieces — two days after the AI model she used to build it became available.

That, in one sentence, is what this post is about.

Over the summer I have written here about the tools I have been building with AI: a lactate threshold analyzer, a ten-year triathlon heat-strain study run end-to-end with AI, a systematic review on lactate supplements and a rebuilt football injury dashboard. None of them needed a development team. What has changed in the last couple of weeks is that it is no longer just me, and no longer just one company’s tools. Researchers, clinicians and educators everywhere are shipping genuinely useful applications, and some of them are very good indeed. So I wanted to pull together what has happened with the models, show you a few of the apps that caught my attention, and be honest about where I think we need to be careful.

How it used to work

For most of my career, getting a bespoke tool built followed the same script. You wrote a specification. You found a developer, or a budget, or both. You waited. You tested what came back and discovered the developer had misunderstood the science. You waited again. Many good ideas never made it past the specification stage, and many of the tools that did were abandoned the moment the grant ran out or the developer moved on.

That script has been torn up. The distance between “I wish I had a tool that did this” and a working link you can send to colleagues is now measured in days, sometimes hours.

What changed this summer

On the Anthropic side, the Claude 5 generation arrived one tier at a time rather than in a single big launch: Claude Opus 4.8 at the end of May, Claude Fable 5 and Mythos 5 on 9 June, Sonnet 5 on 30 June, Opus 5 on 24 July, and Fable 5.1 and Mythos 5.1 on 1 September. Opus 5 is what I used for the lactate review, and the combination of its price and a one-million-token context window is what makes it practical to keep a whole codebase, a dataset and a protocol in view in a single working session.

Fable 5.1 and Mythos 5.1 are the same underlying model with different safeguards: Fable is available to everyone, while Mythos is restricted to vetted cybersecurity and life-sciences organisations. The number that caught my eye was on Terminal-Bench-Science, a benchmark of agentic scientific research tasks, where Fable 5.1 scored 52.6% against 24.7% for Fable 5 only three months earlier. These are vendor-reported benchmarks, so treat them as such, but a doubling in a quarter is not nothing. Cache reads also became 75% cheaper, which sounds boring but matters a lot when an agent spends a long build session re-reading the same files.

The models are only half the story, though. Claude Code, Cowork, Claude Design and artifacts that can store data mean the output of a conversation is no longer a chunk of code you have to assemble yourself — it is a working tool you can open, test, share and keep improving.

On the OpenAI side, GPT-6 Astra was released on 3 September, first to a limited set of organisations and then to ChatGPT Plus, Pro, Business and Enterprise users and the API over the following days. OpenAI pitches it as state of the art for computer use, coding and scientific work. It is also the first OpenAI model to reach the “Critical” cybersecurity threshold in its own Preparedness Framework, which is why the rollout was staged — more on that later. The other piece worth knowing about is ChatGPT Sites, in public beta since July, which builds a web app from a conversation and publishes it straight to a live chatgpt.site address with the hosting included. At launch it was not available in the EEA, the UK or Switzerland, so not everyone reading this will have it yet.

Summer 2026: frontier model releases and the tools built with themAnthropic (orange) and OpenAI (teal) releases, May–September 2026, against examples of tools shipped in the same windowFable 5 / Mythos 5access paused(US export controls)Frontier model releasesTools shipped (examples)Claude Opus 4.8Claude Fable 5& Mythos 5Claude Sonnet 5Claude Opus 5Claude Fable 5.1& Mythos 5.1GPT-6 AstraLactate ThresholdAnalyzerTen-year triathlonheat-strain studyLactate supplementsystematic review(Opus 5)Football injurydashboard rebuildTesla Model Xexploded view(Astra)Human Atlas2,234 meshes(Astra)Model release → public 3D anatomy app: 2 daysJun 2026Jul 2026Aug 2026Sep 2026

The summer in one picture: model releases on top, tools shipped underneath. The gap between GPT-6 Astra becoming available and a public, open-source 3D anatomy explorer built with it was two days.

The cost of trying an idea has collapsed. The cost of being wrong has not.

Four tools worth a look

Human Atlas: the body in 2,234 pieces

human-atlas-seven.vercel.app · code on GitHub

This is the one I opened this post with. Developer Ashe Magalhaes had just used Astra to build an “exploded view” of a Tesla Model X in 334 pieces, and then, after joking online about whether it would be weird to do the same with a body, did exactly that. Human Atlas takes the BodyParts3D adult male reference apart into 2,234 selectable meshes across 15 anatomical systems, with 3,432 searchable named structures. You can rotate the body, isolate a single structure, switch systems on and off, and spread the whole thing out into an inventory of every visible piece. It is built with React and Three.js, the code is MIT-licensed, and the anatomy data keeps its own CC BY 4.0 licence.

What impressed me most, though, was not the rendering. It was the README. It tells you what was validated (mesh data, search, layouts on desktop and phone screens, tap-versus-drag handling), what was not tested (performance on physical devices and real multitouch hardware), and that it is an educational explorer, not a diagnostic or surgical tool. That is exactly the standard I would like to see from anyone publishing an AI-built tool.

Human Atlas: 2,234 BodyParts3D meshes in an exploded view, running in the browser with nothing to install.

Immediately after, another developer deployed the female model.

Someone else today deployed the skeleton

Portal Tau: clinical research methods made interactive

investigaciontau.com · Portal Tau

Tau: Investigación Clínica y Epidemiológica is Dr Joshuan J. Barboza’s Spanish-language platform for training researchers in systematic reviews, research methods and scientific publishing. Its companion Portal Tau shows what one researcher-educator can now put online. There is a Journal Match tool that scores how well your manuscript fits across 32,193 journals using Scimago, DOAJ and OpenAPC data; an explorer comparing the publication fees journals advertise with what institutions actually paid; a ten-module evidence-based medicine calculator; and a clinical trials simulator.

The simulator is the piece I would use in teaching. It runs phase I dose-escalation designs participant by participant — BOIN, Keyboard, CRM, the classic 3+3 and accelerated titration — as well as phase II designs (Simon, Gehan, Bayesian and randomised), and then simulates thousands of trials with Monte Carlo methods. Anyone who has tried to explain to a room of students why the 3+3 design is inefficient will know that running a thousand simulated trials in front of them does more than any slide ever will. And the whole suite sits on free static hosting: no server bill, no IT department.

The clinical trials simulator in Portal Tau: designs that usually live in textbooks, made interactive.

Shoulder Atlas: the examination in motion

shoulder-mechanics-atlas.geraldmd.chatgpt.site

If I had to put one of these in front of physiotherapy and sports medicine students tomorrow, it would be this one. Shoulder Atlas animates 12 clinical examination tests on a 3D right shoulder: empty can (Jobe’s), full can, Neer’s, Hawkins–Kennedy, painful arc, resisted external rotation, lift-off (Gerber’s), belly-press, Speed’s, Yergason’s, cross-body adduction and passive external rotation.

Each test plays out in stages. For the empty can, you watch the arm elevate in the scapular plane, the thumb turn down, and the examiner apply resistance, with live readouts of arm elevation, humeral rotation and elbow flexion. Separate overlays show passive guidance, examiner resistance and patient effort, and the target structures light up — supraspinatus and the subacromial region, in this case. Alongside the animation you get how to perform the test, what it loads, what counts as a positive finding and how to interpret it, with links to Stanford Medicine 25, the AAFP and ShoulderDoc.

Two things make it a particularly good example for this post. The first is where it lives: a chatgpt.site address, which is where ChatGPT Sites hosts what it builds, so it went from conversation to public link without anyone configuring a server. The second is its “About the model” panel, which is a small masterclass in honest scoping. Bones and muscle surfaces come from BodyParts3D; the bursa, capsule and tendon paths are simplified overlays; scapular movement is illustrative; there is no collision, force, tissue-strain or pain solver; and the angles describe the animation, not measured patient motion. It calls itself a teaching prototype, not a validated diagnostic simulator, reminds you that no single test confirms a diagnosis, and says plainly that instability and labral tests are not in this first version. I have seen commercial products that are a lot less candid.

Shoulder Atlas: Tests can be animated.

What these tools have in common

The hard part is no longer the code. In everything I built this summer, getting something to render was never the problem. The work was deciding which method to use, what to label as an estimate rather than a measurement, and what the tool should refuse to tell you. The science lives in the specification. Someone who understands why a modified Dmax threshold differs from a fixed 4 mmol·L⁻¹ one will write a far better specification than a developer who does not — and now that person can build the tool themselves.

Open data is doing a lot of quiet heavy lifting. Human Atlas and Shoulder Atlas both exist because BodyParts3D is openly licensed. Portal Tau works because Scimago, DOAJ and OpenAPC publish their data. The models get the headlines, but without open datasets they would have very little that is useful to build on.

The expert can build exactly what their practitioners need. A commercial product is designed for the average user. A tool built by someone in the field can encode the exact protocol, the exact caveats and the exact outputs a particular group needs — and be fixed the same afternoon someone spots a problem.

Being honest about limits is becoming the marker of quality. When building is cheap, the tools worth trusting are the ones that tell you what was checked, what was not, and what they are not for.

Where I would be careful

I am enthusiastic about all of this, but it would be a strange post from me if it did not come with caveats.

  • Plausible is not the same as correct. In the lactate review, the AI produced a chemistry figure showing the wrong mirror-image form of the molecule, and it looked perfectly fine. Apps fail in exactly the same way: a chart that renders is not a chart that is right. Every calculation in a tool should be checked against values worked out independently, by hand if necessary.
  • Educational is not clinical. The moment a tool is used to inform the diagnosis or treatment of a specific patient or athlete, it is in regulated territory. The best examples above say explicitly that they are for education. That line needs to stay bright.
  • Data protection does not get faster just because development does. Identifiable athlete or patient data should not go into a quickly deployed web app, or into a prompt, without the same governance you would apply anywhere else.
  • Security matters more, not less. The same capabilities that let a model build an app let it find the weaknesses in one. OpenAI staging Astra’s release because of its cyber capabilities, and the safeguards Anthropic layers on its Mythos-class models, should remind us that something deployed in an afternoon has probably not been hardened.
  • Tools that are easy to build are easy to abandon. Dependencies change underneath you — my own football dashboard showed a blank page for some people until I stopped it relying on an external charting library. Access to the models can change too: in June, Anthropic suspended access to Fable 5 and Mythos 5 for around three weeks to comply with US export controls before restoring it. Keep your code, your data and your exports somewhere you control.

In conclusion

A year ago, most of the tools in this post would have needed a team, a budget and several months. Now they need a researcher with a clear idea, a good specification and the discipline to test what comes back. And this is true whether you work with Claude or with ChatGPT — the capability is no longer tied to one company.

I do not think the people who benefit most will be those who build the most apps. It will be those who specify carefully, validate against known answers, write down what they have not tested, share their code, and keep themselves firmly in the loop. So my encouragement to colleagues is simple: build the tool you have always wished existed, put it online, be honest about its limits, and invite people to break it.

And if you have built something along these lines in sports science or sports medicine, send it my way. I would love to feature a few more.


Links mentioned in this post

Model release dates and benchmark figures come from Anthropic and OpenAI announcements and contemporaneous coverage; benchmarks are vendor-reported. Tool descriptions are based on the public sites and repositories as of 11 September 2026. I have no affiliation with any of the third-party tools mentioned. This post was drafted with the help of Claude and edited by me.

Rebuilding the Football Injury Dashboard: Adding Transfermarkt Data for the 2026/27 Season

The 2026/27 season is a few matchdays old, which is exactly the point in the calendar when injury counts start climbing. It seemed a good moment to go back to the European football injury dashboard I put together earlier in the year and deal with something that had been bothering me about it.

The original version had a structural weakness. Its month-by-month figures were not measurements. The Howden Group Men’s European Football Injury Index — the best free source covering the top five leagues — publishes one total per season, not one per month. To draw a monthly curve I had been distributing those annual totals across the year using the seasonal distribution reported in the UEFA Elite Club Injury Study. That gives a defensible shape, but every individual month was an artefact of the model rather than a count of anything. If you had asked the chart whether September 2023 was worse than September 2024, the answer would have been decided by the annual total, not by what happened in September.

So I added a second dataset alongside it, and let the reader choose which one they are looking at.

Two datasets, two different questions

The dashboard is here: footballinjuries.tiiny.site. A toggle at the top switches between the two sources. They answer genuinely different questions, and I have tried to make the distinction obvious rather than burying it in a footnote.

  • Season pattern — estimated monthly counts across seven leagues and five seasons, showing when in the year injuries cluster. Good for shape, approximate for magnitude.
  • Injured right now — a real count of every player listed as injured on a given date, from Transfermarkt. Good for who is actually missing, useless as a season total.
Line chart showing estimated monthly injury counts across seven European football leagues for the 2026/27 season, peaking in September
The seasonal view. The September peak is the most consistent feature in the whole dataset — players return from the summer break, fixtures arrive quickly, and bodies that have not been at match intensity for weeks are asked to perform. A second, smaller rise comes in April as accumulated load tells.

The Transfermarkt layer

The new view collects every player listed as injured on Transfermarkt‘s injury pages for the Premier League, Bundesliga, La Liga, Serie A, Ligue 1, Eredivisie and Liga Portugal. On 28 August 2026 that came to 257 players. These are individual records — a named player, his club, and what is reported to be wrong with him — not a figure derived from anything.

Stacked bar chart showing players currently injured across seven European leagues on 28 August 2026, coloured by injury type
Players injured across the seven leagues on 28 August 2026. You can click into any league to see it club by club.

The Bundesliga stands out with 66 players out, against 15 in Ligue 1 — though before reading anything into that, note that squad sizes, fixture load and how much press attention a league receives all feed into these numbers. That last factor matters more than it might appear, and it leads directly to the caveats.

Where this data is weak, and why I have said so on the page

Transfermarkt injury records are compiled from press reports, not club medical records, and that has consequences worth stating plainly.

A snapshot over-represents severe injuries. A cruciate ligament rupture stays visible on the page for months; a grade one hamstring strain disappears within a fortnight. The injury mix in the chart is therefore more severe than the mix of injuries a league actually sustains. This is straightforward survivorship bias and it cannot be corrected without incidence data.

Roughly a third of records name only a body part. “Knee injury”, “ankle problems”, or simply “unknown injury”. I could have forced these into a category and produced a tidier chart, but that would be inventing precision that is not in the source. They appear as Not specified instead. In the Eredivisie this accounts for 32 of 56 records — a striking difference in reporting practice rather than in injury patterns, and one that is itself interesting.

These are counts, not rates. There is no exposure denominator — no adjustment for minutes played — so none of this is comparable with the injuries-per-1000-hours figures the epidemiological literature reports. For that you need the UEFA Elite Club Injury Study or club data, and this dashboard is not a substitute for either.

The Eredivisie and Liga Portugal are also absent from the Howden report entirely, so their seasonal estimates lean on published injury-rate research for comparable leagues and should be treated as softer than the other five.

Other changes

Two smaller things. The dashboard is now written for a general reader rather than for me — plain-language injury categories, an explainer at the top, and a summary underneath the chart that rewrites itself as you change the selection. It also now states honestly how solid each season is: 2022/23 to 2024/25 are confirmed by Howden, 2025/26 has finished but is awaiting the December 2026 report, and 2026/27 has barely started and is labelled as a projection rather than a record.

The other change is invisible but was the reason several people saw a blank page: the chart previously loaded its plotting library from a CDN, and if that request failed — restricted network, content blocker, poor connection — the result was an empty rectangle with no explanation. It now draws its own SVG with no external dependencies at all. Nothing is loaded from anywhere. It works offline.

What next

The obvious next step is real month-by-month history rather than estimates. Transfermarkt does hold this — every individual injury record carries a start date — but assembling it means collecting player-level histories across seven leagues and several seasons, which is an overnight job rather than a page fetch. I have the pipeline written using the worldfootballR package; it is a matter of running it and validating what comes back. If it holds up, the estimated monthly figures get replaced with counted ones and the weakness I described at the top of this post disappears.

As with the triathlon dashboard, this is a living project and I would rather it be scrutinised than taken on trust. Have a look at the dashboard and tell me what is wrong with it, or what you would want to see next.

Seasonal estimates derived from the Howden Group Men’s European Football Injury Index (2024/25 edition, published December 2025) and the UEFA Elite Club Injury Study. Current-injury figures collected from Transfermarkt on 28 August 2026 and filtered to clubs competing in each league. Injury classification from free-text labels is approximate. These are counts without an exposure denominator and should not be read as incidence rates.

Do lactate supplements work? A systematic review run thanks to AI agents to make some sense of the hype

Lactate supplements are the latest hype. Lactate gels appeared in the Tour de France peloton, “exogenous lactate” is a growth category in sports nutrition, and the underlying science genuinely has moved — lactate is a fuel and a signalling molecule, not a waste product (if you want to read an excellent review from Prof George Brooks, the world leading authority on lactate metabolism, click here). The question I wanted answered was narrower and more practical: does ingesting it make anyone faster?

So I ran a systematic review and meta-analysis. I did not do it with the final aim to submit it to a peer reviewed journal to get a publication out of it. If I did that, you would be probably reading this in two years after going through the pain of: writing the paper, formatting it to a journal, submitting it, going around the houses with reviewers and editors, eventually get it accepted and published. I just wanted a quick answer for me and I am sharing this on my blog. So, despite the scientific approach to the process (systematic review and meta-analysis) this is not peer reviewed and therefore you need to consider this blog for what it is. For this work I used Claude Science (Anthropic) with Opus 5 as the LLM.

What follows is both the answer and an honest account of how it was produced — including where an AI research agent hit its limits, where it made mistakes, and where my judgement as the researcher had to override it. That second part matters as much as the first, because the tooling is now good enough that the interesting question is no longer “can it do the analysis” but “where does the human have to stay in the loop.”

The short summary

Across eleven randomised crossover trials (119 participants, 1994–2024), the pooled effect of exogenous lactate on exercise performance was g = 0.13 (95% CI −0.05 to 0.31, p = 0.13). That interval includes zero. Splitting by training status gave athletes g = 0.28 and non-athletes g = 0.07, but the formal test of that difference was null (p = 0.46).

Lactate is unambiguously a usable fuel and a genuine signalling molecule. It is not, on current evidence, an ergogenic aid.

Those two statements sit together comfortably. The marketing story runs: lactate is fuel, therefore ingesting lactate helps performance. The evidence supports the first half and has not yet delivered the second, but considering the paucity of studies, hopefully more studies will be conducted to see if this really works.

How the review was built

I searched PubMed/MEDLINE, Europe PMC and CrossRef, retrieving 15,871 records that deduplicated to 13,079. A topic sieve narrowed this to 1,331 records for title/abstract screening, 36 full texts were sought, and 11 trials met criteria. Ten came out of the search; the eleventh — Van Montfoort et al. (2004) — the search missed entirely, and it only entered the review because I went looking for it by hand afterwards. More on that below.

PRISMA flow diagram: 15,871 records identified, 13,079 after deduplication, 1,331 screened, 36 full texts sought, 11 trials included.
PRISMA flow. The two manuscripts obtained after the initial search are counted in the full-text row.

Where I had to intervene: the screening ceiling

The protocol specified duplicate independent screening with a Cohen’s κ agreement statistic — standard practice, and what any reviewer would expect. Partway through, the agent hit a hard capacity limit: it had screened 1,053 of 1,331 abstracts and could not run the second reviewer pass. Crucially, it stopped and asked rather than quietly proceeding, laying out three options: enable parallel processing so the full protocol could run, accept single-reviewer screening as a stated deviation, or narrow scope to the core identified trial set.

I chose to narrow scope. That was a judgement call with a real cost, and it is worth being explicit about the trade: the review is honest about the trials it found, but the 278-record tail got a keyword rule rather than reviewer judgement, and this review has no inter-rater agreement statistic. Every included trial was independently identified by more than one search route, which is reassuring about the core set — but it is not a substitute for duplicate screening, and I would not want that glossed. As it turned out, the search had a bigger problem than the screening did.

This is the first place the human-in-the-loop mattered. An agent optimising for a finished-looking deliverable would have reported “systematic review” and moved on. The useful behaviour was surfacing the constraint as a decision for me to own.

Where I had to intervene again: the search missed a trial

After the first version of this post went up I obtained two full manuscripts I had not been able to get during the review. One was Morris et al. (2011), which I had previously worked from the abstract. The other turned out not to be in the review at all: Van Montfoort et al. (2004), a 15-runner double-blind crossover comparing sodium lactate, sodium bicarbonate, sodium citrate and sodium chloride on time to exhaustion. It is indexed in PubMed. It is exactly on topic. The search did not surface it.

That is worth being blunt about, because it is a different kind of failure from the screening ceiling. The screening problem was a known limitation I flagged and worked around. This was a silent miss: a query built around lactate-supplementation phrasing did not match a paper framed as a comparison of four alkalinising salts, and nothing in the pipeline registered that anything was absent. Recall failures do not announce themselves — there is no error message for a paper you never saw. With one confirmed miss out of eleven included trials, the honest position is that I do not know the true recall of this search, and neither does any automated pipeline that has not been checked against a hand-built reference set.

Adding it did not change the conclusion — the pooled performance estimate moved from 0.13 to 0.13, which is the least interesting possible outcome and also the most reassuring one. What it did change is the acid–base picture, the small-study asymmetry test, and my confidence in the corpus being complete.

What the trials show

Forest plot: exogenous lactate and exercise performance, stratified by training status. Pooled g = 0.13 (95% CI -0.05 to 0.31).
Performance outcomes, stratified by training status. Diamonds are pooled estimates; the flag marks effects imputed rather than reported.

The athlete stratum’s point estimate is four times the non-athlete one, which is exactly the sort of contrast that becomes “works better in trained athletes” in a product brochure. It should not. The interval spans zero generously, the moderator test is null, and the stratum is carried by its two strongest single results — both of which have a problem:

  • Azevedo et al. (2007) (g = 1.21, n = 6) — the largest effect in the review. It compared a lactate-polymer multi-ingredient drink against an isocaloric fructose/glucose sports drink. Active comparator, multiple active ingredients: any difference cannot be attributed to lactate only really.
  • Morris et al. (2011) (g = 0.79, n = 11) — this one changed since the first version of this post, and it is worth explaining how. Originally I could not obtain the full text, so I reconstructed the effect from the reported p-value and rated the trial high risk of bias for everything it did not describe. The full manuscript then turned up. It is a properly conducted double-blind randomised crossover with an aspartame placebo in matched capsules and at least 48 h between trials, so most of that bias rating was my ignorance rather than the trial’s design, and I have downgraded it to some concerns. But the means it contains (168 ± 31 vs 137 ± 41 s) give a larger effect than my reconstruction did, and the acknowledgements name the supplier: Sport Specifics Inc., the company behind SportLegs — the same firm that supplied and funded Ewell et al. (2024). The strongest signal in the trained stratum is a manufacturer-supplied product.

Drop Azevedo and the pooled estimate falls to 0.11. Drop Morris and it falls to 0.09 — Morris is now the single most influential trial in the analysis, which is an uncomfortable place for a sponsor-supplied product to sit. The athlete stratum’s I² of 59% is itself the tell that these trials are not measuring one common effect.

The caveat that matters most

Four of the eleven performance effects are null-imputed. Those trials reported their performance outcome as “non-significant” and gave no means or standard deviations, so there was nothing to extract. Entering them as zero is conservative about direction but it fakes precision — a non-significant result is compatible with a range of effects, not specifically with zero.

This is why the primary model shows I² ≈ 0% and a reassuringly tight interval. Refit on the seven effects that were actually reported, and the interval widens roughly twofold: g = 0.24 (95% CI −0.09 to 0.57). That is the honest number. I put it in the report next to the primary estimate rather than in a supplementary appendix, because reading only the primary model would leave you more confident than the evidence warrants.

Left: acid-base outcomes, study-aggregated, with and without Van Montfoort 2004. Right: sensitivity suite showing no specification moves the performance estimate away from zero.
Left: acid–base outcomes, shown with and without the newly added Van Montfoort trial. Right: the full sensitivity suite — every specification lands in the same place.

The mechanistic crux: no mediator big enough

If lactate salts worked the way bicarbonate does, the acid–base shift would be the mechanism. Pooled across five trials, that effect is g = 0.72 (95% CI −0.53 to 1.98) — but that number is doing something misleading, and the newly added trial is why. Van Montfoort et al. gave 400 mg/kg of sodium lactate, the largest dose in the corpus, and measured a very large bicarbonate shift (g = 3.36). Its placebo, though, was iso-osmolar sodium chloride, which lowers bicarbonate on its own — so part of that gap is the placebo moving down rather than lactate moving up, and the SD behind it is model-derived from a seven-person blood subsample. Excluding it, the pooled acid–base effect is g = 0.43 (95% CI −0.20 to 1.06). Both are on the figure. Neither interval excludes zero.

The most informative trial here is Oliveira et al. (2017), the only one that included a bicarbonate positive control. Calcium lactate moved bicarbonate essentially not at all (g = −0.04), in the same participants, against a comparator known to work. A dose that fails to shift blood chemistry also fails to shift performance. There is no mediator here large enough to produce an ergogenic effect.

Where lactate genuinely does something

The metabolic literature is much stronger than the performance literature, and it deserves separating out.

It is oxidised fast. In a tracer study, ¹³CO₂ production from orally ingested ¹³C-lactate rose faster and more completely than from any other labelled substrate tested, doubling between 45 and 60 minutes of exercise while every other substrate peaked at or after 75 minutes. The breath kinetics are too fast for a liver-first gluconeogenic route, which points at working muscle as the site of most of that oxidation.

It is antilipolytic, and substantially so. A sodium-lactate infusion raising plasma lactate to 2.7 mmol/L cut postabsorptive lipolysis by about 30% — palmitate flux 84 ± 32 versus 120 ± 35 µmol/min, mean difference −36 (95% CI −58 to −14), p = 0.003 — with lower free fatty acid concentrations. Insulin sensitivity itself was unchanged. This is a clean, well-controlled effect, plausibly via the GPR81 receptor in adipose tissue.

Note the direction, though. Suppressing fat oxidation during prolonged exercise shifts reliance toward finite carbohydrate stores. For endurance work that is arguably the wrong way round — which makes a substrate-utilisation trial more interesting than yet another time trial, and raises the real possibility that exogenous lactate impairs long-duration performance (but we definitively need experimental trials to test this hypothesis).

Quality of the evidence

RoB 2 traffic-light grid and per-domain summary across eleven crossover trials: 2 low, 8 some concerns, 1 high.
RoB 2 adapted for crossover designs: 2 low, 8 some concerns, 1 high.

Nine of eleven trials carry some concerns or high risk of bias. Selective reporting is the weakest domain — which is the same defect that produced the four null-imputed effects, since a trial reporting “no significant difference” without numbers is simultaneously a reporting problem and a data-extraction problem. Median sample size across the whole corpus is 11. Egger’s test now crosses the conventional threshold for small-study asymmetry (p = 0.049, previously 0.074) — at k = 11 I would still read that as descriptive rather than as a bias test, but it moved in the direction you would expect when a genuinely missed trial is added.

On GRADE domains I would call the performance evidence low certainty: downgraded for risk of bias, imprecision, and indirectness across heterogeneous forms, doses and comparators.

The chemistry: read the label

The last piece of work conducted with the AI agent was structural — what is actually in these products. I had the agent build every structure from PubChem stereodescriptors and verify each stereocentre computationally.

Lactate and twelve lactate-delivering compounds, grouped by release mechanism, with CIP stereodescriptors verified programmatically.
Lactate and twelve lactate-delivering compounds, grouped by release mechanism. Green: reference species. Blue: ionic salts, lactate free on dissolution. Purple: esters and oligomers, lactate released only on hydrolysis.

Where the agent got it wrong

This figure is where the most instructive error happened, and I want to describe it precisely because it is the kind of mistake that is easy to ship.

The first rendered version labelled every L-form with the CIP descriptor belonging to its mirror image. Physiological lactate is L-(S); the panels said (R). The cause was subtle: the SMILES strings had been written by hand, and reordering the substituents around a stereocentre while keeping the original chirality tag silently inverts the molecule. No error, no warning — a chemically valid structure of the wrong enantiomer.

It was caught by looking at the rendered figure and noticing the annotations contradicted the compound names. Every SMILES was then rebuilt from PubChem’s own stereodescriptors and re-verified on three axes: successful parsing, per-centre CIP label matching the name, and unchanged molecular formula. That third check is what confirmed the fix touched stereochemistry only, so the mass fractions computed earlier remained valid.

An agent that renders a figure and moves on ships the wrong enantiomer. Checking the output against what it claims to show is not optional.

There is a related point about why the error mattered scientifically rather than just cosmetically: several marketed lactate salts are sold as racemates. Iron(II) lactate and sodium stearoyl lactylate, among others, are DL- mixtures — meaning half the delivered lactate is the D-isomer, which in humans is largely of gut-bacterial origin and metabolised far more slowly. In the corrected figure those compounds are deliberately drawn without stereocentres, so the graphic does not imply an enantiomeric purity the products do not have.

Hydration state changes the dose by a quarter

FormLactate % w/wmmol lactate/g
Magnesium L-lactate88.09.9
Calcium L-lactate (anhydrous)81.69.2
Sodium L-lactate79.58.9
Iron(II) lactate (racemic)76.18.6
Ethyl L-lactate75.48.5
Potassium L-lactate69.57.8
Calcium L-lactate pentahydrate57.86.5
Sodium stearoyl lactylate (racemic)39.54.4
Calcium lactate gluconate27.53.1
Lactate content per gram varies more than threefold across marketed forms. Full table of 15 forms in the supplementary data.

Calcium lactate pentahydrate is the form actually weighed into most oral products, and it is 57.8% lactate by mass — not the 81.6% of the anhydrous salt. A trial reporting “500 mg/kg calcium lactate” therefore delivers materially different lactate depending on which it used, and papers frequently do not say. The counter-ion sets its own ceiling: calcium lactate at 500 mg/kg/day also delivers roughly 92 mg/kg/day of calcium.

Across the corpus of literature analysed, gastrointestinal tolerability — not lactate pharmacology — was the binding constraint. In Swensen et al. (1994), GI efflux at polylactate concentrations of 2.5% or above forced the drink down to 0.75%, meaning the tolerable dose may sit below any effective one: a dose-ceiling confound rather than simply low power. In Bordoli et al. (2024), overt GI side effects in the lactate arm likely compromised blinding.

What I take from this

For athletes and coaches. There is no good evidence lactate supplements improve performance, trained or untrained. The trials that look most favourable are the ones with an active comparator, compromised blinding, or a manufacturer in the acknowledgements. The single result I would build a follow-up study on is Ewell et al. (2024): oral lactate changed nothing about VO₂peak, ventilatory threshold or work rate at lactate threshold, but sustained work rate in a 20-minute functional threshold test was about 3.5% higher (204 vs 197 W). One modest effect on one outcome in fifteen people is a hypothesis, not a finding — and it is worth knowing that the supplement and the funding both came from the manufacturer. It points somewhere specific, which is different from being persuasive.

For researchers. The gaps are unusually well-defined. No trial has tested a form and dose that reliably produces the acid–base shift while remaining tolerable — the effective dose and the tolerability ceiling have not been shown to overlap. No trial has stratified L- versus DL- form, despite many marketed products being racemic. And given how substantial the antilipolytic effect is, a trial powered on substrate utilisation during prolonged exercise would tell us more than another time trial. For sure we need larger sample sizes.

On working this way

A few observations from doing a full systematic review with an AI agent as the analytical engine.

The mechanical work compresses enormously. Corpus assembly, deduplication across three databases, effect-size derivation under crossover assumptions, the sensitivity suite, RoB coding, and five publication-grade figures — that is weeks of work, and it ran in a session.

The errors are not where you expect. Nothing went wrong in the meta-analytic mathematics. What went wrong was a DOI parser harvesting identifiers from reference lists rather than article metadata, corrupting 1,285 records; and hand-written chemistry silently inverting stereochemistry. Also, some of the references were pulled in incorrectly. All were plumbing failures that produced confident, plausible, wrong output — the failure mode that peer review sometimes is worst at catching.

The human contribution was mostly refusal. Refusing to let single-reviewer screening be described as a full protocol. Refusing to supply a fabricated contact email to unblock a resolver. Refusing to accept a stereochemistry figure that looked right. Refusing to report the tight primary interval without the imputation-corrected one beside it. None of that is analytical labour — it is deciding what an honest version of the claim looks like, which remains the researcher’s job.

What earned trust was the agent stopping. The single most useful behaviour across the whole project was hitting the screening ceiling and asking me how to proceed, with the trade-offs of each option spelled out, instead of producing something that looked complete. Every protocol deviation in this review is written into the methods, footnoted on the PRISMA diagram, and listed in a companion document ordered by how much each should change your reading. That is the standard I would want, and it is achievable — but it has to be asked for.


The trials themselves: what was given, how much, for how long

Below is every trial in the review. Two things stand out once they are laid side by side. Brand was recoverable for most trials — difficult to verify the salt hydration state or enantiomeric composition of what was swallowed. And the supplier column has a pattern in it. Sport Specifics Inc. — the SportLegs manufacturer — supplied the product in three of the eleven trials, including the two that produced the strongest results, and funded one of them outright.

And only one trial used chronic loading. Oliveira et al. (2017) gave 500 mg/kg/day in four divided doses across five consecutive days. Every other trial was a single acute dose or feeding during exercise. Any claim you read about “lactate loading” rests on that one trial — which was null in its outcomes.

StudynStatusLactate formBrand / supplierDose as reportedSupplementation durationComparator
Ewell et al. 202415non_athleteCa lactate + Mg lactate + vitamin D3 (capsules)SportLegs (Sport Specifics Inc., Longmont, CO, USA)1 capsule per 22.7 kg body mass (manufacturer guideline); 372 mg lactate/capsuleSingle acute doseOrganic rice starch placebo, visually identical
Bordoli et al. 202414athleteCalcium lactate in opaque gelatine capsulesSpecial Ingredients Ltd. (Chesterfield, UK)147 mg/kg body mass calcium lactate = 120 mg/kg lactateSingle acute dose, ingested over 5–10 minFlour placebo in matched capsules
Oliveira et al. 201718athleteCalcium lactateNot reported500 mg/kg BM/day as 4 × 125 mg/kg dosesCHRONIC — 5 consecutive daysPlacebo + sodium bicarbonate positive control (same 500 mg/kg/d)
Painelli et al. 201412non_athleteCalcium lactateNot reportedHigh dose 300 mg/kg BM; low dose 150 mg/kg BMSingle acute dosePlacebo
Northgraves et al. 20147non_athleteLactate supplement (salt not specified)Not reported1115 mg absolute lactate (not body-mass scaled)Single acute dosePlain flour placebo + NaHCO3 300 mg/kg arm + NaCl placebo
Peveler & Palmer 20129unclearMagnesium lactate dihydrate + calcium lactate monohydrateNot named (commercial product; abstract refers to ‘manufacturers of supplements’)Not reported in abstractSingle acute dosePlacebo
Morris et al. 201111athleteCalcium lactateNot named; product supplied by Sport Specifics Inc.120 mg/kg body mass lactateSingle acute doseAspartame placebo in matched capsules + no-treatment control
Azevedo et al. 20076athleteLactate-polymer multi-ingredient drink (lactate polymer + fructose + glucose + glucose polymer)CytoMax (containing PolyLactate); leading sports drink as comparatorBeverage consumed before and during exercise (tracer study)Pre-exercise + during 90 min continuous exerciseIsocaloric fructose + glucose sports drink (ACTIVE comparator)
Bryner et al. 19987athlete2% lactate solution, ± 8% carbohydrateNot reported2% lactate beverage consumed every 20 min during exerciseConsumed DURING exercise, every 20 min to exhaustionPlacebo, 8% CHO, and 8% CHO + 2% lactate arms
Swensen et al. 19945unclearPolylactate (amino acid/lactate salt) + glucose polymerNot named (‘as supplied by the manufacturer’)0.3 g CHO/kg BM every 20 min as 7% solution; 6.25 g GP + 0.75 g PL per 100 mLConsumed DURING exercise, every 20 min to exhaustionIsocaloric pure glucose polymer solution
Van Montfoort et al. 200415athleteSodium lactate (reagent grade, gelatin capsules)None — laboratory salt, not a commercial product400 mg/kg body mass sodium lactateSingle acute doseSodium chloride, iso-osmolar (plus NaHCO3 and Na-citrate arms)
All eleven trials. Morris and Van Montfoort rows are now from the primary manuscripts rather than from abstracts or secondary citations.

Why the dose column cannot be read straight down

The corpus reports dose against three incompatible bases. Bordoli et al. specify 147 mg/kg of calcium lactate and convert it to 120 mg/kg of lactate; recomputing that from the anhydrous formula (81.63% lactate w/w) returns 120.0 mg/kg, which confirms both their arithmetic and that they used the anhydrous basis. Oliveira et al. and Painelli et al. report salt mass without stating hydration state, so delivered lactate is either about 82% of the printed figure (anhydrous) or about 58% (pentahydrate) — the papers do not say which. Ewell et al. report lactate mass, at 19 mg/kg: roughly one sixth of Bordoli’s dose, and the lowest in the review by a wide margin.

Two trials were dose-limited by the gut rather than by design. Swensen et al. had to cut polylactate from 2.5% to 0.75% because higher concentrations caused severe gastrointestinal efflux — meaning the tolerable dose may sit below any effective one. Bordoli et al. reported overt GI symptoms in the lactate arm, which probably unblinded it.

In conclusion

There is still a lot of work needed to really understand if lactate supplementation has positive effects on performance (and define on what type of performance). Most of all, it is still difficult to determine the appropriate dosage and formulation. Considering the hype of recent months, I hope more independent studies will be conducted to answer all those questions.


References

All eleven trials included in the review, in APA 7th edition. These were generated from retrieved PubMed citation metadata rather than transcribed by hand — which is how I caught that four of my own internal study labels had been named after the wrong author in the initial data scraping.

  • Azevedo, J. L., Tietz, E., Two-Feathers, T., Paull, J., & Chapman, K. (2007). Lactate, fructose and glucose oxidation profiles in sports drinks and the effect on exercise performance. PLOS ONE, 2(9), e927. https://doi.org/10.1371/journal.pone.0000927
  • Bordoli, C., Varley, I., Sharpe, G. R., Johnson, M. A., & Hennis, P. J. (2024). Effects of oral lactate supplementation on acid-base balance and prolonged high-intensity interval cycling performance. Journal of Functional Morphology and Kinesiology, 9(3), 139. https://doi.org/10.3390/jfmk9030139
  • Bryner, R. W., Hornsby, W. G., Chetlin, R., Ullrich, I. H., & Yeater, R. A. (1998). Effect of lactate consumption on exercise performance. The Journal of Sports Medicine and Physical Fitness, 38(2), 116–123.
  • Ewell, T. R., Bomar, M. C., Brown, D. M., Brown, R. L., Kwarteng, B. S., Thomson, D. P., & Bell, C. (2024). The influence of acute oral lactate supplementation on responses to cycle ergometer exercise: A randomized, crossover pilot clinical trial. Nutrients, 16(16), 2624. https://doi.org/10.3390/nu16162624
  • Morris, D. M., Shafer, R. S., Fairbrother, K. R., & Woodall, M. W. (2011). Effects of lactate consumption on blood bicarbonate levels and performance during high-intensity exercise. International Journal of Sport Nutrition and Exercise Metabolism, 21(4), 311–317. https://doi.org/10.1123/ijsnem.21.4.311
  • Northgraves, M. J., Peart, D. J., Jordan, C. A., & Vince, R. V. (2014). Effect of lactate supplementation and sodium bicarbonate on 40-km cycling time trial performance. Journal of Strength and Conditioning Research, 28(1), 273–280. https://doi.org/10.1519/JSC.0b013e3182986a4c
  • Oliveira, L. F., de Salles Painelli, V., Nemezio, K., Gonçalves, L. S., Yamaguchi, G., Saunders, B., Gualano, B., & Artioli, G. G. (2017). Chronic lactate supplementation does not improve blood buffering capacity and repeated high-intensity exercise. Scandinavian Journal of Medicine & Science in Sports, 27(11), 1231–1239. https://doi.org/10.1111/sms.12792
  • Painelli, V. de S., da Silva, R. P., de Oliveira, O. M., de Oliveira, L. F., Benatti, F. B., Rabelo, T., Guilherme, J. P., Lancha, A. H., & Artioli, G. G. (2014). The effects of two different doses of calcium lactate on blood pH, bicarbonate, and repeated high-intensity exercise performance. International Journal of Sport Nutrition and Exercise Metabolism, 24(3), 286–295. https://doi.org/10.1123/ijsnem.2013-0191
  • Peveler, W. W., & Palmer, T. G. (2012). Effect of magnesium lactate dihydrate and calcium lactate monohydrate on 20-km cycling time trial performance. Journal of Strength and Conditioning Research, 26(4), 1149–1153. https://doi.org/10.1519/JSC.0b013e31822dcd7f
  • Swensen, T., Crater, G., Bassett, D. R., & Howley, E. T. (1994). Adding polylactate to a glucose polymer solution does not improve endurance. International Journal of Sports Medicine, 15(7), 430–434. https://doi.org/10.1055/s-2007-1021083
  • Van Montfoort, M. C. E., Van Dieren, L., Hopkins, W. G., & Shearman, J. P. (2004). Effects of ingestion of bicarbonate, citrate, lactate, and chloride on sprint running. Medicine & Science in Sports & Exercise, 36(7), 1239–1243. https://doi.org/10.1249/01.mss.0000132378.73975.25

Analysis in Python (pandas, RDKit, matplotlib) and R (metafor).

This is a research synthesis, not clinical or nutritional advice and it is not peer reviewed. Lactate salts carry sodium, calcium or potassium loads that matter for anyone with renal, cardiac or electrolyte conditions, and the doses used in these trials caused gastrointestinal intolerance in some participants. Decisions about supplementation for a specific person belong with a qualified clinician or sports dietitian who has the full picture.