This paper proposes a feature-preserved thinning algorithm for handwritten Chinese characters. One stroke that crosses or connects other strokes is divided into segments based on the direction runs in the stroke. Four directions are represented by four direction codes and one of four direction codes is assigned to each black pixel. Connected pixels with the same direction code form a block. We split blocks into stroke and fork segments according to the direction codes of blocks and the adjacent relationships among the blocks. The skeletons of the stroke segments are extracted; no skeleton point is extracted in the fork segments. Skeleton segments that connect to one fork segment are joined to reconstruct complete stroke skeletons by replacing the fork segment with line segments. The four directions are just used to split strokes; the thinned strokes are still in any possible direction. The proposed approach is free from the Y-shape distortion, L-shape distortion, hairy problem, shortening problem, and hole problem.