Raman spectroscopy · Analysis suite

Light, reduced to signal.

Every Raman analysis tool a working lab needs (fitting, mapping, ML, AI) in one window. Reproducible by definition.

Scroll
In one window
LoadingCleanupCroppingMulti-peak fit2D mapping3D mappingClusteringPCAAI literaturePublishable exportLoadingCleanupCroppingMulti-peak fit2D mapping3D mappingClusteringPCAAI literaturePublishable export
The problem

Today's Raman analysis is fragmented, manual, and not reproducible.

Six partner labs. A median work week. Thirty-one hours. And by Friday the result still isn't reproducible.

01

Custom code, fragile science.

Every lab writes its own scripts. They break with every new dataset.

02

No standard for batch and maps.

Single-spectrum tools don't scale. Maps are held together by notebooks and tape.

03

ML is out of reach.

Most spectroscopists can describe what they want, not implement it.

04

Everything is by hand.

Background, peaks, labels, figures, repeated for every sample, every paper, every revision.

The pipeline · from raw to publishable

The story in a single spectrum.

One Raman scan of graphene oxide carries an entire material report — if you know how to read it. Scroll: the spectrum beside you runs Nitida's full pipeline, from raw noise to a classified map.

RAW · SNR
14 dB
01 · The raw signal

Straight off the instrument.

Graphene oxide, untouched: the real peaks are buried under a sloping fluorescence background and sharp cosmic-ray spikes. Adjust the noise to feel where a spectroscopist actually starts — signal-to-noise barely 14 dB.

02 · Clean

Pluck the cosmic rays.

Cosmic rays hit the detector at random, leaving single-pixel spikes taller than the signal itself. A median filter finds each one and lifts it out — watch them fly off — without disturbing the bands beneath.

03 · Subtract the floor

Lift the signal off the background.

The fluorescence background is modelled and subtracted, and the trace settles onto a flat axis. Switch the method and watch the difference: arPLS leaves the cleanest line.

04 · Fit the peaks

Two bands, two stories.

The ordered G-band and the defect-born D-band are each fit with a pseudo-Voigt. The strip below is the residual — what the model missed. Here it is almost flat: R² 0.9987.

→ Tap the G and D chips to read each band’s FWHM — the width that encodes crystal quality.

05 · One number

Divide D by G.

The ratio of the two band intensities tracks how disordered the carbon is. Drag the reduction slider: as the oxide is reduced, ordered domains shrink and ID/IG climbs from graphene oxide toward reduced GO.

06 · Scale up

One recipe, every spectrum.

A Raman map is thousands of spectra on a grid. The recipe you just built — despike, baseline, fit, ratio — runs on every point automatically: 2,400 spectra, each pixel coloured by its ID/IG. Chemistry becomes an image. You choose what to colour by.

07 · Multivariate

Let the data find its own axes.

Principal component analysis compresses each spectrum into a couple of numbers that capture most of the variation. Plotted against each other, the pixels drift apart into natural families — no labels required.

08 · Clustering

Group by similarity.

k-means gathers the pixels into clusters and paints them back onto the map: distinct phases — oxidised flake, reduced patch, substrate — emerge as coherent regions. Choose how many clusters to look for.

09 · Classification

Name every region.

Train on a handful of labelled points and Nitida classifies the rest: each pixel is assigned to graphene oxide, reduced GO or substrate, at 97.8% agreement with the ground truth. A full phase map, from one recipe.

10 · Reproducible by design

Six months later, same figure.

Every step you just watched is captured in a 20 KB JSON. Re-run it on another machine, by another student, and the figure is identical. Replay the whole pipeline below — then bring it to your own data.

Download Nitida

macOS · Windows · Linux — offline, your data stays yours.

The capabilities

Five tools, one window.

01 · Load and clean

Load any format. Clean it in one click.

CSV, vendor formats. Five baseline methods including arPLS and SNIP. Cosmic ray removal on by default.

  • 01Five baselines, polynomial, arPLS, Rolling Ball, Rubberband, SNIP.
  • 02Real-time preview, see the result while you tune parameters.
  • 03Map mode, apply the cleanup to 1,200 spectra at once.
spectra · nitida_001 · raw vs. corrected
02 · Peak fitting

Multi-peak fitting that converges.

Lorentzian, Gaussian, Pseudo-Voigt. Auto-detection or manual placement. Constraints when physics demands them.

  • 01Two engines, scipy curve_fit and lmfit.
  • 02Hard constraints on position, amplitude, FWHM.
  • 03R² · χ²ᵣ · per-peak parameters exported with every fit.
multi-peak deconvolution · pseudo-voigt
Drag the peaks · cm⁻¹
P1
P2
P3
Sum
R² 0,9987
03 · Mapping

Maps that tell the story, not just the data.

Apply your fitting recipe to every map point. 2D heatmaps, 3D surfaces, profiles, custom expressions.

  • 01Custom expressions, peak1_amp / peak2_amp becomes an ID/IG map.
  • 02Single-point refit fixes outliers without rerunning the map.
  • 033D profiles and surfaces tunable in real time.
  • 04Multivariate analysis — PCA, NMF, UMAP and t-SNE condense thousands of spectra into a few interpretable components.
  • 05Clustering and classification — K-means, GMM, hierarchical, HDBSCAN, spectral, plus classifiers (SVM, Random Forest, KNN, PLS) to segment and identify phases.
heatmap · I_D / I_G · 2,400 spectra
0,4
2,1
3 min 24 s
04 · Local AI & ML

An assistant that reads the literature. Locally.

The built-in research agent searches papers, extracts peak data, and correlates them with your analyzed spectra. PCA, k-means, classifiers, ready to use.

  • 01Fully local, runs on Ollama. No API key.
  • 02Literature search, Google Scholar and paper extraction.
  • 03Visual answers, the assistant draws spectra and heatmaps in chat.
assistant · local · ollama · gemma4:e4b
Identify the peaks in my graphene oxide.
Read 8 papers on graphene-oxide Raman. Your fit shows the D band at 1,348 cm⁻¹ and the G band at 1,583 cm⁻¹.Ferrari · 2007Stankovich · 2007+6 more
Compare my data against the literature.
Your ID/IG = 1.34 falls between Stankovich (1.28) and Ferrari (1.41). Consistent with partially reduced GO. 12 papersmatch 92%
Cluster the map by spectral shape.
Ran k-means · k = 4. A (38%) pristine graphene · B (24%) GO · C (22%) disordered carbon · D (16%) substrate. Cluster overlay rendered on the heatmap.
05 · Reproducibility

One JSON, one figure, anywhere.

Every analysis step (baseline, crop, peaks, constraints, ML model) is captured in a 20 KB JSON. Share it, version it, rerun it.

  • 01Settings export captures the full pipeline as portable JSON.
  • 02Built-in presets for graphene, silicon, diamond.
  • 03Same figure, six months later, on another machine, by another student.
analysis · graphene_map_001 · settings.json
01
Load · graphene_map_001.csv
a3f1…b29c
02
Background · arPLS λ=1e5
a3f1…b29c
03
Crop · 1,200–1,700 cm⁻¹
a3f1…b29c
04
Peak fit · pseudo-voigt × 4
a3f1…b29c
05
Map · ID/IG
a3f1…b29c
settings.json · 18.4 KB · sha256 a3f1c84b29c…
The numbers

From 31 hours to 40 minutes.
And it's reproducible.

Numbers from six pilot labs, six months, 220k spectra processed. Times measured on end-to-end analysis of a 2,400-point map.

Time saved
0×
Median end-to-end analysis: 31 h manual → 40 min in Nitida.
Pilot labs
0
Active on real datasets in materials science, biology, and pharma.
Spectra fitted
0k
Total spectra processed in pilots since first release.
Reproducibility
0%
Rerun a settings file and you get the identical figure. By design.

*Indicative figures based on typical workflow.

Compare

The category had no scientific-grade default.

Vendor suite OriginPro Python notebook Nitida
Multi-spectrum batch fitting Limited Manual Yes (code) Native
2D and 3D mapping Vendor-locked No Yes (code) Built-in
Reproducibility (one file) No No Ad-hoc By design
ML / classification No No Yes (code) One click
AI literature assistant No No No Local · private
Cross-platform · vendor-neutral Hardware-bound Yes Yes Mac · Win · Linux
Built for the spectroscopist Yes No No (engineers) Yes
Pricing

Two ways to step in.

A license for solo work. A direct line for labs, companies and integrations.

Companies · Vendor

Company or integration

Let's talk

For labs, companies, vendor integrations or special needs. Email me directly.

  • Multiple / site licenses
  • Instrument integration
  • Dedicated onboarding & support
  • Co-branding & citations
Contact me →

Prices excl. VAT.

Downloads

Run Nitida on your machine.

Native desktop app, fully offline. Pick your operating system.

User guide · HTML · 4.7 MB
First 6 months free · then €15/mo

Light, reduced to signal.

If you fit Raman spectra by hand on Friday afternoon, try Nitida — the first 6 months are on us.

FAQ

Frequently asked.

Does my data leave the lab?+
No. Nitida runs entirely on your machine, AI included. The research assistant uses Ollama locally: no cloud calls, no API keys, no data on the wire.
What file formats can I load?+
Standard CSV, native formats from major vendors (Renishaw, Horiba, Bruker). 1D, 2D, and hyperspectral maps up to hundreds of thousands of spectra.
Does it run on Mac, Windows, Linux?+
Yes. Nitida is cross-platform: same binary, same settings, same results on Mac, Windows, Linux. The only optional external dependency is Ollama for AI features.
Can I integrate it into my existing workflow?+
Yes. All parameters are exposed as portable JSON, and the Python API lets you drive Nitida from existing notebooks. Built-in presets for graphene, silicon, diamond are a reproducible starting point.
What does "reproducible by definition" mean?+
Every analysis step (load, background, crop, peaks, constraints, ML model, export) is captured in a ~20 KB settings.json file. Loading it on another machine reproduces the same figure exactly. Zero ambiguity.
How long is onboarding?+
A 4-hour session is enough to take a lab from first install to first publishable map. Most pilot users are autonomous within the first week.
Feedback

What would you improve?

A bug, an idea, a format you wish we supported. User requests drive what we build next.

Opens your email app — no data leaves the site.

Or write to us directly: [email protected]