The manipulation of the quantum states of light in linear optical systems has multiple applications in quantum optics and quantum computation. The package QOptCraft gives a collection of methods to solve some of the most usual problems when designing quantum experiments with linear interferometers. The methods include functions that compute the quantum evolution matrix for n photons from the classical description of the system and inverse methods that, for any desired quantum evolution, will either give the complete description of the experimental system that realizes that unitary evolution or, when this is impossible, the complete description of the linear system which approximates the desired unitary with a locally minimal error. The functions in the package include implementations of different known decompositions that translate the classical scattering matrix of a linear system into a list of beam splitters and phase shifters and methods to compute the effective Hamiltonian that describes the quantum evolution of states with n photons. The package is completed with routines for useful tasks like generating random linear optical systems, computing matrix logarithms, and quantum state entanglement measurement via metrics such as the Schmidt rank. The routines are chosen to avoid usual numerical problems when dealing with the unitary matrices that appear in the description of linear systems. Program summaryProgram Title: QOptCraftCPC Library link to program files:https://doi.org/10.17632/r24hszggf4.1Developer's repository link:https://github.tel.uva.es/juagar/qoptcraftLicensing provisions: Apache-2.0Programming language: Python 3 v3.9.5:0a7dcbd, May 3 2021 17:27:52Supplementary material:: User's manual at https://github.tel.uva.es/juagar/qoptcraft/-/blob/main/QOptCraft_V1.1_user_guide.pdfNature of problem: The evolution of the quantum states of light in linear optical devices can be computed from the scattering matrix of the system using a few alternative points of view. Apart from being able to compute the evolution through a known optical system, it is interesting to consider the less studied inverse problem of design: finding the optical system which gives or approximates a desired evolution. Linear optical systems are limited and can only provide a small subset of all the physically possible quantum transformations on multiple photons. Choosing the best approximation for the evolutions that cannot be achieved with linear optics is not trivial.This software deals with the analysis of the quantum evolution of multiple photons in linear optical devices and the design of optical setups that achieve or approximate a desired quantum evolution.Solution method: We have automated multiple computation processes regarding quantum experiments via linear optic devices. The methods rely on the properties of the groups and algebras that describe the problem of light evolution in linear system.The library QOptCraft for Python 3 includes known numerical methods for decomposing an optical system into beam splitters and phase shifters and methods to give the quantum evolution of system classically described by a scattering matrix using either the Heisenberg picture evolution of the states, a description based on the permanents of certain matrices or the evolution from the effective Hamiltonian of the system. It also provides methods for the design of achievable evolutions, using the adjoint representation, and for approximating quantum evolutions outside the reach of linear optics with an iterative method using Toponogov's comparison theorem from differential geometry. The package is completed with useful functions that deal with systems including losses and gain, described with quasiunitary matrices, the generation of random matrices and stable implementations of the matrix logarithm.Additional comments including restrictions and unusual features: The package is designed to work with intermediate scale optical systems. Due to the combinatorial growth in the state space with the number of photons and modes involved, there is an upper limit on the efficiency of any classical calculation. QOptCraft serves as a design tool to explore the building blocks of photonic quantum computers, optical systems that generate useful quantum states of light for their use in metrology or other applications or the design of quantum optics experiments to probe the foundations of quantum mechanics.