Fingerprint recognition is one of the most reliable and popular biometric recognition methods in these days. In this paper, we describe a fingerprint recognition system consisting of three main steps - fingerprint image preprocessing, feature extraction and feature matching. The image preprocessing step enhances fingerprint image to obtain binarized ridges, which are needed for feature extraction. Feature points which are also called minutiae such as ridge endings, ridge bifurcations are then extracted, followed by false minutiae elimination. The novel matching algorithm is proposed, which is a fast and robust minutiae-based method.