SpiNet is a novel simulation environment for building and analyzing large networks of spiking neurons. Heterogeneous networks with complex architectures can be easily built and simulated without detailed knowledge of a particular programming language or script language interpreter. SpiNet is composed of two components: a simulation engine, written in C programming language for performance purposes, and SpiNet network builder tool, or simply NetBuilder, written in Matlab® for expansibility purposes. The NetBuilder tool provides a flexible and efficient graphical interface allowing the user to easily define and set all the main network model properties. The NetBuilder creates the network model files which can then be simulated with the simulation engine. Neurons are modeled as integrate-and-fire units with dual exponential synaptic conductances and the simulation engine uses a second order Runge-Kutta method with a linear interpolant to find spike times and recalibrate post-spike potentials. The engine is capable of handling a vast number of properties including dynamical synapses, long-term plasticity, stochastic activity, detailed 3-dimensional architecture, external stimuli, among others. SpiNet does not incorporate data analysis tools but provides several channels to export simulation results for off-line analysis by specialized data analysis software. An OpenGL graphical engine is integrated into the simulation environment providing visual information of the model dynamics. SpiNet is far from being as complete and feature rich as NEST, Neuron or Genesis, but has the benefit of facilitating the process of building and simulating heterogeneous network models: it is fast and easy to add new neuron populations, change connectivity properties or assign different types of synaptic plasticity without having to edit or write lines of code; all changes are done within NetBuilder GUI. SpiNet is therefore a valuable tool when analyzing large heterogeneous models where many modifications have to be done in order to better understand the contributions of the different functional components involved.