# How to Plot a Bacterial Growth Curve in Excel: A Template

By the end of this guide you will have a working bacterial growth curve Excel template that turns plate reader or spectrophotometer readings into a clean scatter plot, a log-phase growth rate, a doubling time, and a fitted curve you can defend in a lab report. You need Excel 2016 or later, the Solver add-in for model fitting, your raw OD600 readings exported as a CSV or Excel table, the time points in hours, blank well readings, replicate labels, and the strain, medium, temperature, and wavelength recorded in the file. The template is a layout and formula set, not a macro-enabled workbook. You can recreate it in a few minutes and save a free bacterial growth curve Excel template for your next run.

## What a Bacterial Growth Curve Measures

A bacterial growth curve is a plot of biomass or cell number against time. In routine bench work the y-axis is usually optical density at 600 nm, written OD600. OD600 is turbidity. It measures light scattering by cells, not live cell number directly. A culture with more cells scatters more light, so OD600 rises during growth. The relationship between OD600 and colony forming units per milliliter, or CFU/mL, is not universal. It changes with strain, medium, cell size, filamentation, and dead cells. Calibrate OD600 to CFU/mL by [serial dilution](/knowledge/molecular-biology/serial-dilution) and plating when absolute counts matter.

The classic curve has four regions. The lag phase is the interval after inoculation when cells adapt and biomass increases slowly. The exponential phase is the interval when cells divide at a constant maximum specific growth rate, usually written mu. The stationary phase is the plateau when growth slows as nutrients deplete or waste products accumulate. The decline or death phase is the fall in viable cells, which is not always visible in OD600 because dead cells still scatter light. These phases are core microbiology concepts and are still taught because they frame every growth experiment, mutant comparison, and antimicrobial assay [1].

Microplate readers changed the practical side of this work. They give better temporal resolution and higher throughput than cuvette spectrophotometers, but the analysis is less straightforward [2]. A plate reader can read a 96-well plate every 5 or 10 minutes for many hours. That density of time points makes Excel useful, but it also exposes problems such as evaporation, edge effects, and multiple scattering at high cell density. Time-derivative methods can help separate real growth from optical artifacts [3]. Color from test compounds can interfere with turbidimetric readings, which is why automated scattering-based monitors and careful blank controls matter in antimicrobial screening [4].

## The Bacterial Growth Curve Excel Template Format

Use a long-format raw data sheet. One row should represent one well at one time point. This format imports cleanly from plate reader software, works with PivotTables, and avoids a wall of repeated time columns. Keep a separate metadata sheet and a summary sheet.

| Sheet | Column | Header | Example | Units | Required |
|--|--|--|--|--|--|
| Metadata | A | Field | Strain | text | yes |
| Metadata | B | Value | Escherichia coli ATCC 25922 | text | yes |
| Metadata | C | Notes | Frozen stock passage 3 | text | no |
| RawData | A | Time_h | 0 | hours | yes |
| RawData | B | Well | A1 | text | yes |
| RawData | C | Replicate | 1 | number | yes |
| RawData | D | OD600_raw | 0.052 | OD units | yes |
| RawData | E | OD600_blank | 0.041 | OD units | yes |
| RawData | F | OD600_corrected | 0.011 | OD units | formula |
| RawData | G | LN_OD600 | -4.51 | natural log | formula |
| RawData | H | Treatment | control | text | no |
| Summary | A | Time_h | 0 | hours | yes |
| Summary | B | Mean_OD600 | 0.011 | OD units | formula |
| Summary | C | SD_OD600 | 0.002 | OD units | formula |
| Summary | D | CV_percent | 18.2 | percent | formula |
| Summary | E | Mean_LN_OD600 | -4.51 | natural log | formula |
| Parameters | A | Parameter | mu | text | yes |
| Parameters | B | Value | 0.92 | h^-1 | formula |

Record these metadata fields before analysis: strain identity, medium name and lot, temperature, shaking speed, volume per well, plate type, reader model, OD wavelength, read interval, blank well positions, replicate count, and the person who ran the plate. These details determine whether two growth curves are comparable. A curve without metadata is hard to reproduce.

A good layout also keeps raw data untouched. Put formulas in separate columns or a separate sheet. If you edit raw OD values directly, you lose the audit trail. Save one copy as raw_export.csv and one copy as growth_curve_analysis.xlsx. Use the raw file as the source of truth.

## How to Plot a Bacterial Growth Curve in Excel: Step by Step

### Step 1: Import the plate reader export

Export the run as a CSV with one row per well per time point. In Excel, use Data > Get Data > From Text/CSV. Check the delimiter, usually a comma. Confirm that Time_h is numeric, not text. A time column that looks like 0:00 or 30 min will not plot correctly until converted to decimal hours. If your reader exports minutes, add a new column and divide by 60.

```excel
=A2/60
```

Rename the sheet RawData. Freeze the header row with View > Freeze Panes > Freeze Top Row.

### Step 2: Add blank correction

OD600_blank is the reading from a well containing medium only, processed the same way as the sample wells. If the plate reader subtracts a reference filter or blank automatically, confirm what the export contains. Do not subtract a blank twice. The corrected OD formula is:

```excel
=D2-E2
```

A small negative value near zero can occur from pipetting noise. A large negative value means the blank is higher than the sample or something changed during the run. Do not hide it with a maximum function. Investigate it.

If you use Excel 365, convert the raw range to a table with Ctrl+T and name it tblRaw. Structured references make formulas easier to read.

### Step 3: Build the summary table

List every unique time point in Summary column A. Sort ascending. Then calculate the mean of blank-corrected OD600 for each time point. In Excel 365:

```excel
=AVERAGEIFS(tblRaw[OD600_corrected],tblRaw[Time_h],$A2)
```

For the sample standard deviation:

```excel
=STDEV.S(FILTER(tblRaw[OD600_corrected],tblRaw[Time_h]=$A2))
```

In older Excel, use an array formula entered with Ctrl+Shift+Enter:

```excel
=STDEV(IF(tblRaw[Time_h]=$A2,tblRaw[OD600_corrected]))
```

The [coefficient of variation](/blog/research-skills/how-to-calculate-coefficient-of-variation) as a percent:

```excel
=IF(B2=0,"",C2/B2*100)
```

The natural log of the mean, used for the exponential phase plot:

```excel
=IF(B2>0,LN(B2),"")
```

If B2 is zero or negative, LN returns #NUM!. That is expected. A zero OD cannot be logged. Exclude that point from log-phase fitting and note why.

### Step 4: Plot the raw curve

Select Summary Time_h and Mean_OD600. Use Insert > Charts > Scatter with Smooth Lines and Markers. Do not use a Line chart. A Line chart treats the x-axis as categories and spaces time points evenly even when your sampling intervals are uneven. An XY scatter chart uses the numeric time values.

Add each replicate as its own series if you want to see spread. Right-click the chart and choose Select Data > Add. Use the replicate OD600_corrected column as the Y values and the time column as the X values. Keep the mean series thicker or darker than the replicate series.

Add axis titles with Chart Design > Add Chart Element > Axis Titles. Label the x-axis Time (h) and the y-axis OD600, blank-corrected. Add a chart title that includes the strain, medium, and temperature.

### Step 5: Add error bars

Select the mean series. Go to Chart Design > Add Chart Element > Error Bars > More Error Bars Options. Choose Custom and Specify Value. Use the SD_OD600 range for both positive and negative error values. Error bars show replicate spread, not the standard error of the mean. If you want standard error, calculate it in a separate column and label the chart clearly.

### Step 6: Make the log plot and select the exponential window

Copy the natural log column into the chart or create a second scatter plot with Time_h on the x-axis and Mean_LN_OD600 on the y-axis. The exponential phase should appear as a straight rising line. Select only the points that belong to that straight segment. Do not fit the lag phase, the stationary plateau, or the death phase to a single exponential slope.

A practical approach is to plot the full curve, identify the visually linear log segment, and test at least four to six consecutive points. If removing one point changes the slope substantially, the window is not stable. Use the same time window for every replicate and every strain in a comparison.

### Step 7: Calculate mu with SLOPE or LINEST

The slope of LN(OD600) against time is the maximum specific growth rate, mu, in inverse hours when time is in hours.

```excel
=SLOPE(D5:D10,A5:A10)
```

The same result from LINEST:

```excel
=INDEX(LINEST(D5:D10,A5:A10,TRUE,TRUE),1,1)
```

The intercept is useful for checking the fit:

```excel
=INDEX(LINEST(D5:D10,A5:A10,TRUE,TRUE),1,2)
```

The R-squared value:

```excel
=INDEX(LINEST(D5:D10,A5:A10,TRUE,TRUE),3,1)
```

If the slope is negative during a period you believe is exponential, check the selected window, the blank correction, and whether the culture was actually growing.

### Step 8: Calculate doubling time

Doubling time, also called generation time, is the time required for the population to double during exponential growth.

```excel
=LN(2)/mu
```

If mu is 0.92 h^-1, doubling time is about 0.75 h, or 45 minutes. Keep units consistent. A mu in h^-1 gives a doubling time in hours. A mu in min^-1 gives a doubling time in minutes.

### Step 9: Fit a full curve model with Solver

A full growth curve is not a single exponential. It has a lag, an exponential rise, and a plateau. The modified Gompertz model is one standard sigmoidal model for this shape [5]. A common form is:

```text
y = A * EXP(-EXP((mu * EXP(1) / A) * (lambda - t) + 1))
```

Here y is OD600, A is the asymptotic maximum, mu is the maximum specific growth rate, lambda is the lag time, and t is time. EXP(1) is Euler's number, about 2.71828.

Set up a parameter block:

| Cell | Parameter | Starting value |
|--|--|--|
| B2 | A | 1.0 |
| B3 | mu | 0.5 |
| B4 | lambda | 2.0 |

Add a predicted column next to the observed summary data:

```excel
=$B$2*EXP(-EXP(($B$3*EXP(1)/$B$2)*($B$4-A2)+1))
```

Add a squared residual column:

```excel
=(B2-F2)^2
```

Sum the squared residuals:

```excel
=SUM(G2:G40)
```

Open Solver with Data > Solver. If Solver is missing, enable it at File > Options > Add-ins > Manage Excel Add-ins > Go > check Solver Add-in > OK.

Set the objective to the sum of squared residuals. Choose Min. Set the variable cells to B2:B4. Add constraints: A > 0, mu > 0, lambda >= 0. Choose GRG Nonlinear. Run Solver.

A successful run reports: Solver found a solution. All constraints and optimality conditions are satisfied. If Solver reports that it could not find a feasible solution, rescale the OD data to fall between 0 and 1, set better starting values from the observed plateau and log slope, and widen the constraints slightly.

The Gompertz fit gives a lag estimate, a maximum growth rate, and an asymptote. These parameters depend on the model. A logistic fit can give a different lag estimate from the same data. Report the model name with the parameters.

### Step 10: Calculate area under the curve

Area under the OD600 curve, or AUC, summarizes overall biomass exposure over time. It is useful when comparing strains or conditions that differ in both growth rate and plateau. A trapezoidal calculation in Excel:

```excel
=SUMPRODUCT((A3:A10-A2:A9)*(B3:B10+B2:B9)/2)
```

Keep the time units in hours so AUC has units of OD600 times hours. Do not compare AUC values across different sampling intervals unless the curves are interpolated to a common time grid.

## A Worked Example of the Bacterial Growth Curve Excel Template

Suppose a hypothetical run has time points at 0, 2, 4, 6, 8, 10, and 12 hours. The blank-corrected mean OD600 values are 0.05, 0.06, 0.12, 0.35, 0.85, 1.10, and 1.12. The log-transformed values rise in a straight line from 4 to 8 hours. The slope over that window is 0.92 h^-1. Doubling time is 0.75 h.

Example output table from that hypothetical run:

| Time (h) | Mean OD600 | Mean LN OD600 | Curve region |
|--|--|--|--|
| 0 | 0.05 | -3.00 | lag |
| 2 | 0.06 | -2.81 | lag |
| 4 | 0.12 | -2.12 | early exponential |
| 6 | 0.35 | -1.05 | exponential |
| 8 | 0.85 | -0.16 | late exponential |
| 10 | 1.10 | 0.10 | stationary |
| 12 | 1.12 | 0.11 | stationary |

The expected chart is a scatter plot with time in hours on the x-axis and blank-corrected OD600 on the y-axis. The curve stays low during lag, rises steeply from 4 to 8 hours, then flattens. Replicate points should cluster tightly in the exponential phase. If one replicate separates early, check the well position, pipetting volume, and whether that well received the same inoculum.

The expected log plot is a straight line over the selected exponential window. The slope from SLOPE and the slope from LINEST should match to several decimal places. The Gompertz fit should place the asymptote near the observed plateau and the lag estimate within the observed lag interval.

## Interpreting the Parameters

| Parameter | Symbol or Excel output | Meaning | Common unit |
|--|--|--|--|
| Blank-corrected OD600 | OD600_corrected | Sample turbidity minus medium turbidity | OD units |
| Mean OD600 | AVERAGEIFS | Average of replicate wells at a time point | OD units |
| Standard deviation | STDEV.S | Spread among replicates | OD units |
| Maximum specific growth rate | mu from SLOPE | Slope of LN(OD600) against time in exponential phase | h^-1 |
| Doubling time | LN(2)/mu | Time for a doubling in exponential phase | h |
| Lag time | lambda from Gompertz | Model-based delay before rapid growth | h |
| Asymptote | A from Gompertz | Model-based maximum OD600 | OD units |
| Area under the curve | AUC | Integrated OD600 exposure | OD units times h |
| R-squared | RSQ or LINEST | Fraction of variation explained by the fit | unitless |

The maximum specific growth rate is a rate, not a count. A high mu means the culture is doubling quickly under those conditions. A low mu can mean a poor medium, a suboptimal temperature, an inhibitory compound, or a strain that grows slowly. Doubling time is easier to communicate to a reader. A doubling time of 0.75 h means the culture doubles about every 45 minutes during the exponential window.

Lag time is the most model-dependent parameter. The lag phase is a period of adaptation, and it can be variable between replicate cultures [6]. A single lag estimate from one fit should not be treated as a fixed strain property. Report the model, the fitted lambda, and the observed time to first detectable increase.

A flat curve can mean growth inhibition, but it can also mean a detection problem. If you are screening antimicrobials or anti-biofilm agents, use a growth curve analysis that can distinguish growth inhibition from biofilm inhibition [7]. A compound that reduces OD600 may be killing cells, inhibiting division, or simply absorbing light at 600 nm. Color interference is a known problem in turbidimetric antimicrobial testing [4]. Include a compound-only blank and a medium-only blank.

## Quality Checks: How to Know the Plot Is Right

Check the raw data first. Every treatment group should have a time zero reading. Every blank well should have the same medium, volume, and incubation conditions as the sample wells. If the plate was read with a lid, keep the lid on for every read. If the outer wells evaporate faster, use them for blanks or fill unused wells with sterile water.

Check the corrected OD column. Values near zero are acceptable. Large negative values are not. A corrected OD that decreases over time in a culture that should be growing suggests evaporation, blank drift, or a reader problem.

Check the log plot. The exponential phase should be linear. Curvature in the log plot means the selected window includes lag, stationary phase, or a transition. Refit using a narrower window. Compare the slope from SLOPE with the slope from LINEST. They should agree. If they do not, check the cell ranges.

Check the model residuals. Residuals should look random around zero. A U-shaped residual pattern means the model is missing a phase. A few large residuals at the plateau can mean the asymptote is poorly constrained. If the fit is unstable, fix the asymptote to the observed maximum and fit only mu and lambda.

Check the parameters against the observed curve. The fitted asymptote should be near the highest mean OD600. The fitted lag should fall within the interval before the rapid rise. The fitted mu should be close to the slope from the log window. If the fitted mu is far from the log slope, the model may be over-parameterized for the data.

Compare your result with an independent analysis. PMAnalyzer parameterizes growth curves from microtiter plate data and provides automated growth identification and replicate summaries [8]. BactEXTRACT converts raw optical density, fluorescence, and luminescence measurements into publication-ready plots [9]. ipolygrowth calculates growth curve parameters from time series data using polynomial functions [10]. A rough agreement with one of these tools is a useful sanity check.

## Common Mistakes and Limitations

Using a Line chart instead of an XY scatter chart is the most common plotting error. A Line chart treats time as text categories, so a run sampled at 0, 1, 2, 4, 8, and 24 hours will space those points evenly. Fix it with Insert > Scatter.

Forgetting the blank correction inflates every OD600 value and shifts the curve upward. Subtract the medium-only blank at the same time point and temperature. If the reader already subtracted a blank, do not subtract a second one.

Fitting the entire curve to an exponential model is a conceptual error. The exponential phase is only one segment. A single exponential fit through lag, exponential, and stationary phases will produce a slope that depends on how many plateau points you included. Select the linear segment on the log plot and use the same window across compared runs [1].

Reading OD600 outside the linear range of the instrument is another common problem. At high cell density, multiple scattering makes OD600 nonlinear. The exact linear range depends on the reader, path length, and wavelength [11]. Dilute the sample and remeasure when the plateau looks compressed, or use a validated path-length correction. Do not assume that a high OD600 is a precise cell count.

Ignoring color or precipitate interference is a serious limitation in antimicrobial screens. A colored compound can raise OD600 without any bacterial growth. A precipitate can scatter light. Use compound-only wells, medium-only wells, and a viability readout when the result matters [4]. Automated scattering-based systems can reduce this problem, but they still need proper controls [4].

Treating OD600 as CFU/mL without calibration is a reporting error. OD600 is an optical proxy. Two strains with the same OD600 can have different viable counts. Two samples of the same strain can differ after heat treatment because dead cells still scatter light. Calibrate with serial dilution and plating for the strain and medium you are using.

Using an uneven sampling interval without accounting for it in the chart is a plotting error. Excel's scatter chart handles uneven times correctly. The trapezoidal AUC formula also handles uneven intervals. Do not average the y-values across time points as if each point represented the same interval.

Mixing time units is a quiet source of wrong growth rates. A plate reader may export minutes while your chart axis says hours. If mu is calculated from minutes, the doubling time formula returns minutes. Convert the time column once and label it Time_h. Do not mix hour and minute columns in the same fit.

A single logistic or Gompertz fit cannot describe diauxic growth. Diauxic growth shows two exponential phases separated by a lag as the culture switches carbon sources [12]. A single sigmoidal model will split the difference and hide the second phase. Fit each phase separately or use a model designed for diauxie.

Solver failures are common with poorly scaled data. The exact message Solver could not find a feasible solution usually means the starting values are far from the answer or the constraints conflict. Start with A equal to the observed plateau, mu equal to the log slope, and lambda equal to the observed lag. Add bounds instead of broad constraints. If the data are noisy, fit fewer parameters.

Excel error messages are diagnostic. #DIV/0! in a mean column usually means a time point has no numeric replicates or the blank cell was included in the range. #VALUE! means a text value entered a numeric column, often from a CSV with mixed decimal separators. #N/A from FILTER or AVERAGEIFS means the time value in the summary does not exactly match the time value in the raw data. #NUM! from LN means the corrected OD is zero or negative. #REF! means a referenced column was deleted. Fix the data, not the error display.

| Excel message | Likely cause | Fix |
|--|--|--|
| #DIV/0! | No numeric replicate or division by zero | Check blank cells and AVERAGEIFS ranges |
| #VALUE! | Text in an OD or time column | Convert the column to numbers and remove units from cells |
| #N/A | Time value has no match | Match time formats and use exact numeric values |
| #NUM! | LN of zero or negative OD | Exclude the point or fix the blank correction |
| #REF! | Deleted column used by a formula or chart | Update the formula or reset the chart data range |
| Solver could not find a feasible solution | Bad starting values or conflicting constraints | Rescale OD, set better starting values, add bounds |

A limitation of any Excel template is that it is only as good as the experimental design. No formula can correct for a contaminated blank, a skipped time point, or a plate that was read at uneven temperatures. Keep the raw export, record the metadata, and repeat the run if the replicate spread is large.

## From Excel to a Reproducible Report

A useful growth curve report includes the strain, medium, temperature, vessel or plate type, working volume, shaking conditions, OD wavelength, blank definition, sampling interval, replicate number, and the exact time window used for the exponential fit. Include the formula for mu and the model used for the full curve. State whether the y-axis is blank-corrected OD600 or CFU/mL.

If you are learning microbiology, keep the raw sheet with the template. A microbiology course instructor can check your exponential window and slope, which are the parts most often graded. The calculations are simple, but the choices behind them are the science.

Once the template is stable, sensible next steps are CFU calibration, derivative-based analysis, and model comparison. Time-derivative methods can reveal growth transitions that are hard to see in a raw OD curve [3]. Polynomial fits offer an alternative to sigmoidal models for some time series [10]. Automated pipelines such as PMAnalyzer and BactEXTRACT can process many plates and produce consistent plots [4,15]. Use Excel for the first look, then move to a scripted pipeline when the experiment scales up.

## Frequently Asked Questions

### What is the best chart type for a bacterial growth curve in Excel?

Use an XY scatter chart with smooth lines and markers. A line chart treats time as categories and can space points evenly even when sampling intervals are uneven.

### How do I calculate growth rate in Excel?

Use SLOPE on the natural log of blank-corrected OD600 against time during the exponential phase. The slope is the maximum specific growth rate in inverse hours when time is in hours.

### How do I calculate doubling time from the growth rate?

Divide the natural log of 2 by mu. If mu is in h^-1, the result is in hours. Use LN(2) in Excel rather than 0.693 for consistency.

### Should the y-axis be OD600 or CFU/mL?

Use OD600 for real-time convenience and CFU/mL for absolute viable counts. OD600 is an optical proxy and needs a calibration curve for the strain and medium if you report cell numbers.

### Why is my blank-corrected OD negative?

The blank reading is higher than the sample, or the blank and sample changed differently during the run. Check evaporation, pipetting volume, and whether a reference filter was already applied.

### Can I fit the lag phase in Excel?

Yes. Use a Gompertz or logistic model with Solver and treat the lag estimate as model-dependent. Report the model name and the observed lag interval alongside the fitted value.

### How many replicates should the template include?

At least three independent or technical replicates per condition are a practical starting point. More replicates are better when the difference between strains is small or the plate has known edge effects.

### How do I make a free bacterial growth curve Excel template?

Use the sheet layout in this guide, add the formulas for blank correction, mean, standard deviation, LN transform, SLOPE, and LN(2)/mu, then save the workbook as an .xlsx file. No macros are required.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the best chart type for a bacterial growth curve in Excel?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use an XY scatter chart with smooth lines and markers. A line chart treats time as categories and can space points evenly even when sampling intervals are uneven."
      }
    },
    {
      "@type": "Question",
      "name": "How do I calculate growth rate in Excel?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use SLOPE on the natural log of blank-corrected OD600 against time during the exponential phase. The slope is the maximum specific growth rate in inverse hours when time is in hours."
      }
    },
    {
      "@type": "Question",
      "name": "How do I calculate doubling time from the growth rate?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Divide the natural log of 2 by mu. If mu is in h^-1, the result is in hours. Use LN(2) in Excel rather than 0.693 for consistency."
      }
    },
    {
      "@type": "Question",
      "name": "Should the y-axis be OD600 or CFU/mL?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use OD600 for real-time convenience and CFU/mL for absolute viable counts. OD600 is an optical proxy and needs a calibration curve for the strain and medium if you report cell numbers."
      }
    },
    {
      "@type": "Question",
      "name": "Why is my blank-corrected OD negative?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The blank reading is higher than the sample, or the blank and sample changed differently during the run. Check evaporation, pipetting volume, and whether a reference filter was already applied."
      }
    },
    {
      "@type": "Question",
      "name": "Can I fit the lag phase in Excel?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Use a Gompertz or logistic model with Solver and treat the lag estimate as model-dependent. Report the model name and the observed lag interval alongside the fitted value."
      }
    },
    {
      "@type": "Question",
      "name": "How many replicates should the template include?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "At least three independent or technical replicates per condition are a practical starting point. More replicates are better when the difference between strains is small or the plate has known edge effects."
      }
    },
    {
      "@type": "Question",
      "name": "How do I make a free bacterial growth curve Excel template?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use the sheet layout in this guide, add the formulas for blank correction, mean, standard deviation, LN transform, SLOPE, and LN(2)/mu, then save the workbook as an .xlsx file. No macros are required."
      }
    }
  ]
}
</script>

## Sources

1. [Microbial Primer: Bacterial growth kinetics](https://pubmed.ncbi.nlm.nih.gov/38329407/)
2. [Bacterial Growth Curve Measurements with a Multimode Microplate Reader.](https://pubmed.ncbi.nlm.nih.gov/35800461/)
3. [A new analysis method for evaluating bacterial growth with microplate readers](https://pubmed.ncbi.nlm.nih.gov/33434196/)
4. [Research on the application of a high-throughput fully automated bacterial growth curve monitor for screening natural antibacterial compounds](https://pubmed.ncbi.nlm.nih.gov/41126026/)
5. [Modeling of the Bacterial Growth Curve](https://pubmed.ncbi.nlm.nih.gov/16348228/)
6. [Simulation and evaluation of different statistical functions for describing lag time distributions of a bacterial growth curve](https://doi.org/10.1016/J.MRAN.2015.08.002)
7. [A novel approach using growth curve analysis to distinguish between antimicrobial and anti-biofilm activities against Salmonella.](https://pubmed.ncbi.nlm.nih.gov/35026447/)
8. [PMAnalyzer: a new web interface for bacterial growth curve analysis](https://pubmed.ncbi.nlm.nih.gov/28200078/)
9. [BactEXTRACT: an R Shiny app to quickly extract, plot and analyse bacterial growth and gene expression data](https://pubmed.ncbi.nlm.nih.gov/38361656/)
10. [ipolygrowth: an R package to calculate individual growth curve parameters from bacterial time series data](https://pubmed.ncbi.nlm.nih.gov/39329416/)
11. [Bacterial growth curve by OD 600 and SoloVPE](https://www.semanticscholar.org/paper/9e6381e27482461e3e8ad12e6dddcda829042e18)
12. [Emergent Lag Phase in Flux-Regulation Models of Bacterial Growth](https://pubmed.ncbi.nlm.nih.gov/37580520/)