Load survival data (time, event, group) to plot.
Use Browse file or drop a CSV / TSV,
or click Demo Data to try example data.
Load survival data (time, event, group) to plot.
Use Browse file or drop a CSV / TSV,
or click Demo Data to try example data.
Input format
CSV, TSV or semicolon-separated text in long format: one row per subject with a survival/censoring time, an event indicator, and an optional group. Times must be plain numbers (decimal commas such as 12,5 are read in semicolon files, and elsewhere when they cannot be a thousands separator). The event column may be 1/0, yes/no, true/false, dead/alive, died/deceased, event/censored, or R-style 1/2 (1 = censored, 2 = event, as in R's Surv()). The 1/2 reading applies only when every value is 1 or 2. In a column that mixes 0, 1 and 2 (for example competing-risk codes), the 2s are not recognised: those rows are skipped and the summary says why.
Rows are skipped, and counted by reason in the summary, when the time is missing, not a number or negative, when the event value is missing or not recognized, or when a group column is chosen and the row's group cell is empty. Blank-group rows are skipped, not pooled into an unnamed group.
Column pickers
The tool auto-detects the time, event, and group columns from your headers and values. Columns such as age, birth year, dates, IDs, status flags and 0/1 columns are never picked as the time. If no column looks like a time, the Time list asks you to choose one. Override any of them with the dropdowns under Columns. Set Group to “(none)” to estimate a single overall curve. The tool compares at most 30 groups; with a group column that has more values (an ID column, say) it asks you to choose another column.
Event value
Says what a 1 (or yes/true) in the event column means. As in R, the default is 1 = event; for 1/2-coded data it is 2 = event, and a note says so. The column name never changes the default: a name such as “censored” or “censrec” is used both ways in real data, so the tool asks you to confirm what 1 means. It also asks you to check when every subject is marked as an event. Words such as dead or alive always keep their meaning.
Confidence level
Choose 90%, 95% (default), or 99%. Confidence bands are pointwise and use the log-log transform with Greenwood's variance, which keeps the interval within [0, 1]. R's survfit uses the “log” transform by default, so its intervals differ slightly unless you set conf.type = "log-log".
Median survival
The median follows R's quantile.survfit rule: the first time the curve drops below 50%. If the curve sits exactly at 50% over a stretch, the median is the middle of that stretch (or the middle of it and the last follow-up time, if the curve never drops again). The median's confidence limits use the same rule on the lower and upper bands. NR means not reached.
Display options
Toggle confidence bands, censoring tick marks, the number-at-risk table below the axis, and median reference lines. All redraw instantly. Each group keeps its colour when others are hidden. With more groups than the palette has colours, the extra curves reuse colours with dashed or dotted lines, and a note above the plot says so. When the legend or the results box does not fit inside the plot, its text gets smaller. Long group names are then shortened with an ellipsis, and with many groups the legend ends with a count of the groups it leaves out. Only names are ever shortened. A number is never cut: a line of the results box that cannot fit with its numbers whole is replaced by a note pointing to the Statistics window. With more than eight hazard ratios, the results box points to the Statistics window instead of listing them. In a small figure the results box moves clear of the legend and keeps what fits there, with the same note for the rest. If there is no room for a box at all (a very small figure or a very large margin), that box is left out. The numbers are then in the Statistics window. The full names are in the side panel, the Statistics window and the Figure Legend text.
Statistics
With two or more groups, the tool reports the log-rank test (χ², df, p) and a Cox proportional-hazards model (Efron ties, Newton-Raphson with step halving as in R) with hazard ratios, confidence intervals, Wald p-values, and Harrell's concordance. The Cox model has the group as its only covariate: it is unadjusted and unstratified. The Cox reference is the first visible group in input order, so hiding the first group changes the reference.
As in R's survdiff, a group with no expected events (no one at risk at any event time) is left out of the log-rank test and the degrees of freedom drop by one. If fewer than two groups are left, the test is reported as not testable. When the Cox model has no finite estimate, no hazard ratios are reported, and the tool says why. If there are no events at all, the Cox model cannot be fitted. If a group has no events, its Cox coefficient is infinite, so its hazard ratio cannot be estimated (R's coxph warns that the “coefficient may be infinite”). If that group is the reference group, the other groups' hazard ratios relative to it are infinite. If a group has no one at risk at any event time, its coefficient is not estimable at all (R reports NA). If that group is the reference group, no hazard ratio relative to it can be estimated. When the reference group is usable, R's coxph still reports the hazard ratios of the groups that are not affected, but this tool reports none, to be safe. When the reference group has no one at risk, R may still report some coefficients, but relative to a different group, so they are not hazard ratios against your reference. If every group has events but the groups are fully separated, the model does not converge.
p-values are shown to 2 significant figures, with more digits when rounding would cross 0.05, 0.01, 0.001 or 0.0001 (so 0.0496 shows as 0.0496, not 0.050). On the figure, in the legend and in the side panel, values below 0.0001 read “p < 0.0001”, as most journals ask. The Statistics window and the copied tables give the exact value.
Interactivity
Click a group in the Per-Group Summary to hide or show it. The plot, log-rank, and Cox model recompute for the visible groups only.
Export
PNG honors the DPI selector (300 is publication standard) and records that DPI in the file. SVG opens in Illustrator and Inkscape with the same text placement as the screen. Copy puts a PNG on the clipboard.
If this tool was useful in your work, please cite it as:
EuropaDX, Inc. (2026). Kaplan-Meier Survival Curve. EuropaXp OmicsCloud Bioinformatics Toolkit. Available at https://europadx.com/tools/kaplan-meier/The Kaplan-Meier tool runs entirely client-side and may freeze or run out of memory on very large datasets (above ~200,000 subjects or files larger than 50 MB).
EuropaXp OmicsCloud handles datasets of any size with full pipeline support, persistent workspaces, and reproducible reports.