A Python program has been developed which fits a published detector-response model to SiPM charge spectra to characterise SiPMs. Spectra for SiPMs illuminated by low intensity pulsed light with Poisson-distributed number of photons and a time spread of order nanoseconds or less, and spectra without illumination can be analysed. The entire spectra, including the intervals in-between the photoelectron peaks, are fitted, which allows determining, in addition to the mean number of detected photons, gain, gain spread, prompt cross-talk, pedestal, and electronics noise, the dark-count rate as well as the probability and time constant of after-pulses. The starting values of the fit parameters are extracted from the charge spectra.The program performance has been evaluated using simulated charge spectra with the different SiPM parameters varied in a wide range. By analysing 100 simulated spectra for every parameter set, the biases and statistical uncertainties of the individual parameters have been determined. It is found that the parameters are precisely determined and that the entire spectra are well described, in most cases with a χ2/NDF close to 1. In addition, measured spectra for two types of SiPMs for a wide range of over-voltages have been analysed. The program achieves mostly a good description of the spectra, and the parameters determined agree with the values from the producers.The program can be used for detailed analyses of single spectra, but, as it is compatible with the native Python multiprocessing module, also for the automatic characterisation of large samples of SiPMs.